package hu.sztaki.ilab.longneck.process.constraint;
/**
*
* @author Molnár Péter <molnarp@sztaki.mta.hu>
*/
public enum CharacterTarget {
ALL,
FIRST,
TOKEN_INITIALS,
TOKEN_INITIALS_NON_ALNUM;
public String apply(String text, CharacterCase characterCase) {
char[] characters = text.toCharArray();
switch (this) {
case ALL:
for (int i = 0; i < characters.length; ++i) {
characters[i] = characterCase.getCharacter(characters[i]);
}
return new String(characters);
case FIRST:
return characterCase.getCharacter(text.charAt(0)) + text.substring(1);
case TOKEN_INITIALS:
for (int i = 0; i < characters.length; ++i) {
if (Character.isLetter(characters[i]) && (i == 0 || Character.isSpaceChar(characters[i-1]))) {
characters[i] = characterCase.getCharacter(characters[i]);
}
}
return new String(characters);
case TOKEN_INITIALS_NON_ALNUM:
for (int i = 0; i < characters.length; ++i) {
if (Character.isLetter(characters[i]) && (i == 0 || !Character.isLetterOrDigit(characters[i-1]))) {
characters[i] = characterCase.getCharacter(characters[i]);
}
}
return new String(characters);
default:
return text;
}
}
}