CamelCaseToWordCase.java

package org.klojang.templates.name;

import org.klojang.check.Check;
import org.klojang.check.Tag;
import org.klojang.templates.NameMapper;

import static java.lang.Character.toUpperCase;
import static org.klojang.check.CommonChecks.emptyString;

/**
 * Converts camel case identifiers to word case (a.k.a. pascal case)
 * identifiers. For example {@code myBloodyValentine} becomes {@code MyBloodyValentine}.
 *
 * @author Ayco Holleman
 */
public class CamelCaseToWordCase implements NameMapper {

  /**
   * Maps a camel case name to a word case name.
   *
   * @param name a word case name
   * @return a camel case name
   */
  public static String mapName(String name) {
    Check.that(name, Tag.NAME).isNot(emptyString());
    return toUpperCase(name.charAt(0)) + name.substring(1);
  }

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

  /**
   * Maps a camel case name to a word case name.
   *
   * @param name a word case name
   * @return a camel case name
   */
  @Override
  public String map(String name) {
    return mapName(name);
  }

}