package com.sleekbyte.tailor.utils; /** * Util class for character formatting. */ public final class CharFormatUtil { private static final String ALPHANUMERIC_REGEX = "^[a-zA-Z0-9]*$"; public static boolean isUpperCamelCase(String word) { return !word.isEmpty() && Character.isUpperCase(word.charAt(0)) && word.matches(ALPHANUMERIC_REGEX); } public static boolean isLowerCamelCase(String word) { return !word.isEmpty() && Character.isLowerCase(word.charAt(0)) && word.matches(ALPHANUMERIC_REGEX); } public static boolean startsWithAcronym(String word) { return word.length() >= 2 && Character.isUpperCase(word.charAt(0)) && Character.isUpperCase(word.charAt(1)) && word.matches(ALPHANUMERIC_REGEX); } public static boolean isLowerCamelCaseOrAcronym(String word) { return startsWithAcronym(word) || isLowerCamelCase(word); } public static boolean isEnclosedInBackticks(String identifier) { int length = identifier.length(); return length >= 2 && identifier.charAt(0) == '`' && identifier.charAt(length - 1) == '`'; } /** * Will strip leading and trailing ` character in given string if both present. * * @param identifier value to sanitize * @return sanitized string */ public static String unescapeIdentifier(String identifier) { int length = identifier.length(); if (isEnclosedInBackticks(identifier)) { return identifier.substring(1, length - 1); } return identifier; } /** * Checks if a name is prefixed with a 'k' or 'K'. * * @param name the name of an identifier * @return true if name is prefixed with a 'k' or 'K' */ public static boolean isKPrefixed(String name) { if (name.length() < 2) { return false; } if (isUpperCamelCase(name)) { return name.charAt(0) == 'K' && Character.isUpperCase(name.charAt(1)); } if (isLowerCamelCase(name)) { return name.charAt(0) == 'k' && Character.isUpperCase(name.charAt(1)); } return false; } }