package io.vertx.codegen.format;
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 {
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: - IllegalArgumentException – if the name has a syntax error
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(CamelCase.INSTANCE, QualifiedCase.QUALIFIED, SnakeCase.INSTANCE, KebabCase.INSTANCE, LowerCamelCase.INSTANCE)) {
vars.put("CASE_" + _case.name(), _case);
}
return vars;
}
}