package openmods.words; import openmods.words.Sequence.Phrase; import openmods.words.Sequence.Word; import org.apache.commons.lang3.text.WordUtils; public class Words { private static IGenerator[] convert(Object... args) { IGenerator[] result = new IGenerator[args.length]; for (int i = 0; i < args.length; i++) { Object arg = args[i]; if (arg instanceof IGenerator) result[i] = (IGenerator)arg; else result[i] = terminal(arg); } return result; } public static IGenerator terminal(Object object) { return new Terminal(object.toString()); } public static IGenerator alt(Object... obj) { return new Alternative(convert(obj)); } public static IGenerator seq(Object... obj) { return new Phrase(convert(obj)); } public static IGenerator word(Object... obj) { return new Word(convert(obj)); } public static IGenerator capitalize(IGenerator gen) { return new Transformer(gen) { @Override protected String transform(String input) { return WordUtils.capitalize(input); } }; } public static IGenerator capitalizeFully(IGenerator gen) { return new Transformer(gen) { @Override protected String transform(String input) { return WordUtils.capitalizeFully(input); } }; } public static IGenerator upper(IGenerator gen) { return new Transformer(gen) { @Override protected String transform(String input) { return input.toUpperCase(); } }; } public static IGenerator lower(IGenerator gen) { return new Transformer(gen) { @Override protected String transform(String input) { return input.toLowerCase(); } }; } public static IGenerator opt(float probability, IGenerator gen) { return new Optional(gen, probability); } public static IGenerator sub(String key) { return new Substitution(key, ""); } public static IGenerator sub(String key, String defaultValue) { return new Substitution(key, defaultValue); } public static IGenerator range(int start, int end) { return new Range(start, end); } }