WordCaseToSnakeLowerCase.java

package org.klojang.templates.name;

import org.klojang.templates.NameMapper;

import static org.klojang.templates.name.CamelCaseToSnakeLowerCase.camelCaseToSnakeLowerCase;

/**
 * Converts word case identifiers to snake case identifiers. For example
 * {@code MyBloodyValentine} becomes {@code my_bloody_valentine}.
 *
 * @author Ayco Holleman
 */
public class WordCaseToSnakeLowerCase implements NameMapper {

  /**
   * Maps a word case name to an all-lowercase snake case name. Any leading and trailing
   * underscores in the name are ignored.
   *
   * @param name a word case name
   * @return an all-lowercase snake case name
   */
  public static String mapName(String name) {
    return camelCaseToSnakeLowerCase().map(name);
  }

  /**
   * Returns an instance of {@code WordCaseToSnakeLowerCase}.
   *
   * @return an instance of {@code WordCaseToSnakeLowerCase}
   */
  public static WordCaseToSnakeLowerCase wordCaseToSnakeLowerCase() {
    return new WordCaseToSnakeLowerCase();
  }

  /**
   * Maps a word case name to an all-lowercase snake case name. Any leading and trailing
   * underscores in the name are ignored.
   *
   * @param name a word case name
   * @return an all-lowercase snake case name
   */
  @Override
  public String map(String name) {
    return mapName(name);
  }

}