String detectRawFromAttributeBuilder(String attributeBuilderName) { for (Naming naming : scheme.attributeBuilder) { String raw = naming.detect(attributeBuilderName); if (!raw.isEmpty()) { return raw; } } return ""; }
/** Forced raw will not work if using this method */ String detectRawFromAbstract(String abstractName) { for (Naming naming : scheme.typeAbstract) { String raw = naming.detect(abstractName); if (!raw.isEmpty()) { // TBD is there a way to raise abstraction return CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_CAMEL, raw); } } return abstractName; }
private String detectRawFrom(String name) { if (!forcedRaw.isEmpty()) { return forcedRaw; } for (Naming naming : scheme.get) { String raw = naming.detect(name); if (!raw.isEmpty()) { return raw; } } return name; }
public final boolean possibleAttributeBuilder(Name name) { for (Naming pattern : scheme.attributeBuilder) { String foundPattern = pattern.detect(name.toString()); if (!foundPattern.isEmpty()) { return true; } } return false; }
@Override public String depluralize(String name) { LinkedList<String> parts = Lists.newLinkedList(splitCamelCase(name)); String plural = parts.removeLast(); @Nullable String singular = dictionary.get(plural); if (singular != null) { parts.addLast(singular); return joinCamelCase(parts); } String detected = NAMING_IES_PLURAL.detect(name); if (!detected.isEmpty()) { return detected + "y"; } detected = NAMING_S_PLURAL.detect(name); if (!detected.isEmpty()) { return detected; } return name; }
@Nullable private TypeElement findBuilderElement() { Protoclass protoclass = protoclass(); if (!protoclass.kind().isValue()) { return null; } for (Element t : protoclass.sourceElement().getEnclosedElements()) { ElementKind kind = t.getKind(); if (kind.isClass() || kind.isInterface()) { String simpleName = t.getSimpleName().toString(); Naming typeInnerBuilderNaming = names().namings.typeInnerBuilder; if (!typeInnerBuilderNaming.detect(simpleName).isEmpty()) { return (TypeElement) t; } } } return null; }
@Test public void underscoreNaming() { Naming underscoreStar = Naming.from("_*"); String detect = underscoreStar.detect("_Abacus"); check(detect).is("abacus"); }
@Test public void prefixNaming() { Naming set = Naming.from("set*"); check(set.apply("x")).is("setX"); check(set.apply("X")).is("setX"); check(set.apply("__")).is("set__"); check(set.detect("se")).isEmpty(); check(set.detect("set")).isEmpty(); check(set.detect("sets")).isEmpty(); check(set.detect("setSe")).is("se"); check(set.detect("setXXX")).is("xXX"); }
@Test public void suffixNaming() { Naming added = Naming.from("*Added"); check(added.apply("x")).is("xAdded"); check(added.apply("X")).is("XAdded"); check(added.apply("__")).is("__Added"); check(added.detect("Added")).isEmpty(); check(added.detect("dded")).isEmpty(); check(added.detect("moreAdded")).is("more"); check(added.detect("XAdded")).is("X"); check(added.detect("XXXAdded")).is("XXX"); }
@Test public void prefixAndSuffixNaming() { Naming oneOf = Naming.from("one*Of"); check(oneOf.apply("x")).is("oneXOf"); check(oneOf.apply("X")).is("oneXOf"); check(oneOf.apply("__")).is("one__Of"); check(oneOf.detect("oneOf")).isEmpty(); check(oneOf.detect("oneX")).isEmpty(); check(oneOf.detect("xOf")).isEmpty(); check(oneOf.detect("oneXOf")).is("x"); }
@Test public void underscoreCharacter() { Naming oneOf = Naming.from("Builder_*"); check(oneOf.apply("x")).is("Builder_X"); check(oneOf.apply("X")).is("Builder_X"); check(oneOf.apply("__")).is("Builder___"); check(oneOf.detect("Builder_X")).is("x"); check(oneOf.detect("Builder__X")).isEmpty(); check(oneOf.detect("BuilderX")).isEmpty(); }
@Test public void lowercaseSuffix() { check(Naming.from("check*out").detect("checkThisout")).is("this"); check(Naming.from("check*out").apply("it")).is("checkItout"); }