package play.modules.scaffold.utils;
import java.util.Arrays;
import java.util.List;
import org.apache.commons.lang.StringUtils;
public class Strings {
public static final String capitalize(String s) {
return String.valueOf(s.charAt(0)).toUpperCase() + s.substring(1);
}
public static final String removeBlankLines(String s) {
if (StringUtils.isEmpty(s))
return s;
StringBuilder sb = new StringBuilder();
String[] lines = StringUtils.split(s, '\n');
for (String line : lines) {
if (!StringUtils.isBlank(line))
sb.append(line + '\n');
}
return sb.toString();
}
public static final String wordify(String s) {
StringBuilder sb = new StringBuilder();
boolean isFirstCharacter = true;
boolean inUpperCase = false;
for (char c : s.toCharArray()) {
if (Character.isLetter(c)) {
if (isFirstCharacter) {
sb.append(Character.toUpperCase(c));
isFirstCharacter = false;
} else if (inUpperCase) {
if (Character.isUpperCase(c)) {
sb.append(Character.toUpperCase(c));
} else {
inUpperCase = false;
sb.append(c);
}
} else {
if (Character.isUpperCase(c)) {
inUpperCase = true;
sb.append(' ');
}
sb.append(c);
}
} else {
sb.append(c);
}
}
return sb.toString();
}
public static final String pluralize(String name) {
if (name == null || name.isEmpty())
return name;
String normalized = name.toLowerCase();
// plural form is the same
if (name.equalsIgnoreCase("news"))
return name;
if (name.equalsIgnoreCase("axis"))
return "Axes";
if (name.equalsIgnoreCase("person"))
return "People";
if (name.endsWith("ty"))
return name.substring(0, name.length() - 1) + "ies";
if (inList(normalized, "man", "woman"))
return Strings.capitalize(name.substring(0, name.length() - 3) + "men");
if (name.equalsIgnoreCase("child"))
return "Children";
// add 'es'
if (name.endsWith("ch") || name.endsWith("sh") || name.endsWith("x") || name.endsWith("ss")) {
return name + "es";
}
// default behavior is to add 's'
return name + "s";
}
private static final boolean inList(String name, String... matches) {
List<String> theList = Arrays.asList(matches);
if (theList.contains(name)) {
return true;
}
return false;
}
public static String join(String in[], char joinBy) {
StringBuilder sb = new StringBuilder();
for (int idx = 0; idx < in.length; idx++) {
sb.append(in[idx]);
if (idx + 1 < in.length)
sb.append(joinBy);
}
return sb.toString();
}
}