From 8085208cf00b8e4902e165ca9ee47ae9f4f46701 Mon Sep 17 00:00:00 2001 From: David Huynh Date: Fri, 16 Apr 2010 23:42:52 +0000 Subject: [PATCH] Fixed toTitlecase to handle fully capitalized text. git-svn-id: http://google-refine.googlecode.com/svn/trunk@489 7d457c2a-affb-35e4-300a-418c747d4874 --- .../expr/functions/strings/ToTitlecase.java | 26 ++----------------- 1 file changed, 2 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/metaweb/gridworks/expr/functions/strings/ToTitlecase.java b/src/main/java/com/metaweb/gridworks/expr/functions/strings/ToTitlecase.java index 9c3954ddf..90105755e 100644 --- a/src/main/java/com/metaweb/gridworks/expr/functions/strings/ToTitlecase.java +++ b/src/main/java/com/metaweb/gridworks/expr/functions/strings/ToTitlecase.java @@ -2,7 +2,7 @@ package com.metaweb.gridworks.expr.functions.strings; import java.util.Properties; -import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.WordUtils; import org.json.JSONException; import org.json.JSONWriter; @@ -16,30 +16,8 @@ public class ToTitlecase implements Function { if (args.length == 1 && args[0] != null) { Object o = args[0]; String s = o instanceof String ? (String) o : o.toString(); - String[] segments = StringUtils.splitByCharacterType(s); - StringBuffer sb = new StringBuffer(); - boolean startOfWord = true; - for (int i = 0; i < segments.length; i++) { - String segment = segments[i]; - char c = segment.charAt(0); - - if (Character.isWhitespace(c)) { - startOfWord = true; - } else if (c == '(' || c == '[' || c == '{' || c == '"' || c == '\'') { - startOfWord = true; - } else if (Character.isLetter(c)) { - if (startOfWord) { - segment = StringUtils.capitalize(segment); - } - startOfWord = false; - } else { - startOfWord = false; - } - sb.append(segment); - } - - return sb.toString(); + return WordUtils.capitalizeFully(s); } return new EvalError(ControlFunctionRegistry.getFunctionName(this) + " expects a string"); }