diff options
author | 2012-02-01 03:28:06 -0800 | |
---|---|---|
committer | 2012-02-01 03:28:06 -0800 | |
commit | 2e5d8312f21151120a97aac7984d96175cf75beb (patch) | |
tree | 75a001822ebd69e251574c48a08a1df08872dd43 /java/src/com/android/inputmethod/latin/Utils.java | |
parent | c5163f91b2841dd2e86c67da18567a910542d1ca (diff) | |
parent | ff858c7ff5e747c17ff6d9d1908e700ad30ded85 (diff) | |
download | latinime-2e5d8312f21151120a97aac7984d96175cf75beb.tar.gz latinime-2e5d8312f21151120a97aac7984d96175cf75beb.tar.xz latinime-2e5d8312f21151120a97aac7984d96175cf75beb.zip |
am ff858c7f: Use MoreKeySpecParser to parse puctuations strip resources
* commit 'ff858c7ff5e747c17ff6d9d1908e700ad30ded85':
Use MoreKeySpecParser to parse puctuations strip resources
Diffstat (limited to 'java/src/com/android/inputmethod/latin/Utils.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/Utils.java | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/java/src/com/android/inputmethod/latin/Utils.java b/java/src/com/android/inputmethod/latin/Utils.java index a70808741..d1b808fc8 100644 --- a/java/src/com/android/inputmethod/latin/Utils.java +++ b/java/src/com/android/inputmethod/latin/Utils.java @@ -857,4 +857,59 @@ public class Utils { } return size; } + + public static String[] parseCsvString(String rawText, Resources res, int packageNameResId) { + final String text = resolveStringResource(rawText, res, packageNameResId); + final int size = text.length(); + if (size == 0) { + return null; + } + if (size == 1) { + return new String[] { text }; + } + + final StringBuilder sb = new StringBuilder(); + ArrayList<String> list = null; + int start = 0; + for (int pos = 0; pos < size; pos++) { + final char c = text.charAt(pos); + if (c == ',') { + if (list == null) { + list = new ArrayList<String>(); + } + if (sb.length() == 0) { + list.add(text.substring(start, pos)); + } else { + list.add(sb.toString()); + sb.setLength(0); + } + start = pos + 1; + continue; + } else if (c == ESCAPE_CHAR) { + if (start == pos) { + // Skip escape character at the beginning of the value. + start++; + pos++; + } else { + if (start < pos && sb.length() == 0) { + sb.append(text.subSequence(start, pos)); + } + pos++; + if (pos < size) { + sb.append(text.charAt(pos)); + } + } + } else if (sb.length() > 0) { + sb.append(c); + } + } + if (list == null) { + return new String[] { + sb.length() > 0 ? sb.toString() : text.substring(start) + }; + } else { + list.add(sb.length() > 0 ? sb.toString() : text.substring(start)); + return list.toArray(new String[list.size()]); + } + } } |