From 24cd2617f527d3d52c7fa36463002c47024083c8 Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Fri, 3 Feb 2012 18:37:30 +0900 Subject: Filter out empty entry from more keys CSV Change-Id: I9a26aaa58f0f502b3bfef9de422370d2b0add8d8 --- .../inputmethod/keyboard/internal/KeySpecParser.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'java/src') diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java b/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java index 4e290024c..adb5f4759 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeySpecParser.java @@ -325,7 +325,7 @@ public class KeySpecParser { return null; } if (Utils.codePointCount(text) == 1) { - return new String[] { text }; + return text.codePointAt(0) == COMMA ? null : new String[] { text }; } ArrayList list = null; @@ -333,10 +333,13 @@ public class KeySpecParser { for (int pos = 0; pos < size; pos++) { final char c = text.charAt(pos); if (c == COMMA) { - if (list == null) { - list = new ArrayList(); + // Skip empty entry. + if (pos - start > 0) { + if (list == null) { + list = new ArrayList(); + } + list.add(text.substring(start, pos)); } - list.add(text.substring(start, pos)); // Skip comma start = pos + 1; } else if (c == ESCAPE_CHAR) { @@ -344,10 +347,13 @@ public class KeySpecParser { pos++; } } + final String remain = (size - start > 0) ? text.substring(start) : null; if (list == null) { - return new String[] { text.substring(start) }; + return remain != null ? new String[] { remain } : null; } else { - list.add(text.substring(start)); + if (remain != null) { + list.add(remain); + } return list.toArray(new String[list.size()]); } } -- cgit v1.2.3-83-g751a