package io.vertx.codegen;

import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

Author:Julien Viet
/** * @author <a href="mailto:julien@julienviet.com">Julien Viet</a> */
public abstract class Case {
Camel case starting with a lower case, for instance fooBar.
/** * Camel case starting with a lower case, for instance {@literal fooBar}. */
public static final Case LOWER_CAMEL = new LowerCamelCase();
Camel case, for instance FooBar.
/** * Camel case, for instance {@literal FooBar}. */
public static final Case CAMEL = new CamelCase();
Java full qualified case, for instance foo.bar
/** * Java full qualified case, for instance {@literal foo.bar} */
public static final Case QUALIFIED = new QualifiedCase();
Kebab case, for instance foo-bar.
/** * Kebab case, for instance {@literal foo-bar}. */
public static final Case KEBAB = new KebabCase();
Snake case, for instance foo_bar.
/** * Snake case, for instance {@literal foo_bar}. */
public static final Case SNAKE = new SnakeCase(); public String name() { throw new UnsupportedOperationException(); } public String format(Iterable<String> atoms) { throw new UnsupportedOperationException(); }
Parse the name argument and returns a list of the name atoms.
Params:
  • name – the name to parse
Throws:
Returns:the name atoms
/** * Parse the {@code name} argument and returns a list of the name atoms. * * @param name the name to parse * @return the name atoms * @throws IllegalArgumentException if the name has a syntax error */
public List<String> parse(String name) { throw new UnsupportedOperationException(); }
Convert a name from this case to the dest case
Params:
  • dest – the destination case
  • name – the name to convert
Returns:the converted name
/** * Convert a name from this case to the {@literal dest} case * @param dest the destination case * @param name the name to convert * @return the converted name */
public String to(Case dest, String name) { return dest.format(parse(name)); } protected static List<String> split(String s, String regex) { String[] atoms = s.split(regex); if (atoms.length == 1 && atoms[0].isEmpty()) { return Collections.emptyList(); } else { return Arrays.asList(atoms); } }
Useful for formatting or parsing string, eg:CASE_CAMEL.format(CASE_SNAKE.parse("foo_bar")),it will return fooBar
/** * Useful for formatting or parsing string, eg:CASE_CAMEL.format(CASE_SNAKE.parse("foo_bar")),it will return fooBar */
public static Map<String, Case> vars() { HashMap<String, Case> vars = new HashMap<>(); for (Case _case : Arrays.asList(CAMEL, QUALIFIED, SNAKE, KEBAB, LOWER_CAMEL)) { vars.put("CASE_" + _case.name(), _case); } return vars; } }