diff options
author | 2014-02-10 18:21:24 +0900 | |
---|---|---|
committer | 2014-02-11 21:41:21 +0900 | |
commit | ed509695a42455874aa9c047ed4343f636ef527b (patch) | |
tree | c31d1cb4dec2fea486ccb72c8d77d9eed876df5f /tools/make-keyboard-text/src | |
parent | cbb0a6de3b3ef0afad604bc2b62319d47b6e2f5d (diff) | |
download | latinime-ed509695a42455874aa9c047ed4343f636ef527b.tar.gz latinime-ed509695a42455874aa9c047ed4343f636ef527b.tar.xz latinime-ed509695a42455874aa9c047ed4343f636ef527b.zip |
Get nicer output of make-keyboard-text
Change-Id: I6d30127aac2198d55b1335002f7a66b4aaebf82d
Diffstat (limited to 'tools/make-keyboard-text/src')
3 files changed, 41 insertions, 13 deletions
diff --git a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/ArrayInitializerFormatter.java b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/ArrayInitializerFormatter.java index 331003e67..d2763e024 100644 --- a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/ArrayInitializerFormatter.java +++ b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/ArrayInitializerFormatter.java @@ -29,12 +29,16 @@ public class ArrayInitializerFormatter { private int mBufferedLen; private int mBufferedIndex = Integer.MIN_VALUE; - public ArrayInitializerFormatter(PrintStream out, int width, String indent) { + public ArrayInitializerFormatter(final PrintStream out, final int width, final String indent) { mOut = out; mMaxWidth = width - indent.length(); mIndent = indent; } + public int getCurrentIndex() { + return mCurrentIndex; + } + public void flush() { if (mBuffer.length() == 0) { return; @@ -59,13 +63,13 @@ public class ArrayInitializerFormatter { mBufferedLen = 0; } - public void outCommentLines(String lines) { + public void outCommentLines(final String lines) { flush(); mOut.print(lines); mFixedElement = null; } - public void outElement(String element) { + public void outElement(final String element) { if (!element.equals(mFixedElement)) { flush(); mBufferedIndex = mCurrentIndex; diff --git a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MoreKeysResources.java b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MoreKeysResources.java index dddb3d6c8..97a12d707 100644 --- a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MoreKeysResources.java +++ b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/MoreKeysResources.java @@ -38,7 +38,6 @@ public class MoreKeysResources { private static final String MARK_TEXTS = "@TEXTS@"; private static final String MARK_LANGUAGES_AND_TEXTS = "@LANGUAGES_AND_TEXTS@"; private static final String DEFAULT_LANGUAGE_NAME = "DEFAULT"; - private static final String ARRAY_NAME_FOR_LANGUAGE = "LANGUAGE_%s"; private static final String EMPTY_STRING_VAR = "EMPTY"; private static final String NO_LANGUAGE_CODE = "zz"; @@ -144,7 +143,12 @@ public class MoreKeysResources { private void dumpDefaultTexts(final PrintStream out) { final StringResourceMap defaultResMap = mResourcesMap.get(DEFAULT_LANGUAGE_NAME); - dumpTextsInternal(out, defaultResMap, defaultResMap); + final int outputArraySize = dumpTextsInternal(out, defaultResMap, defaultResMap); + defaultResMap.setOutputArraySize(outputArraySize); + } + + private static String getArrayNameForLanguage(final String language) { + return "LANGUAGE_" + language; } private void dumpTexts(final PrintStream out) { @@ -157,8 +161,8 @@ public class MoreKeysResources { continue; } out.format(" /* Language %s: %s */\n", language, getLanguageDisplayName(language)); - out.format(" private static final String[] " + ARRAY_NAME_FOR_LANGUAGE + " = {\n", - language); + out.format(" private static final String[] " + getArrayNameForLanguage(language) + + " = {\n"); final StringResourceMap resMap = mResourcesMap.get(language); for (final StringResource res : resMap.getResources()) { if (!defaultResMap.contains(res.mName)) { @@ -166,7 +170,8 @@ public class MoreKeysResources { + " doesn't have default resource"); } } - dumpTextsInternal(out, resMap, defaultResMap); + final int outputArraySize = dumpTextsInternal(out, resMap, defaultResMap); + resMap.setOutputArraySize(outputArraySize); out.format(" };\n\n"); } } @@ -176,13 +181,15 @@ public class MoreKeysResources { allLanguages.addAll(mResourcesMap.keySet()); Collections.sort(allLanguages); for (final String language : allLanguages) { + final StringResourceMap resMap = mResourcesMap.get(language); final Locale locale = LocaleUtils.constructLocaleFromString(language); - // If we use a different key, dump the original as comment for now. final String languageKeyToDump = locale.getCountry().isEmpty() ? String.format("\"%s\"", language) - : String.format("\"%s\" /* \"%s\" */", locale.getLanguage(), language); - out.format(" %s, " + ARRAY_NAME_FOR_LANGUAGE + ", /* %s */\n", - languageKeyToDump, language, getLanguageDisplayName(language)); + : String.format("\"%s\"", locale.getLanguage()); + out.format(" %s, %-15s /* %3d/%3d %s */\n", + languageKeyToDump, getArrayNameForLanguage(language) + ",", + resMap.getResources().size(), resMap.getOutputArraySize(), + getLanguageDisplayName(language)); } } @@ -194,10 +201,11 @@ public class MoreKeysResources { return locale.getDisplayName(Locale.ENGLISH); } - private static void dumpTextsInternal(final PrintStream out, final StringResourceMap resMap, + private static int dumpTextsInternal(final PrintStream out, final StringResourceMap resMap, final StringResourceMap defaultResMap) { final ArrayInitializerFormatter formatter = new ArrayInitializerFormatter(out, 100, " "); + int outputArraySize = 0; boolean successiveNull = false; for (final StringResource defaultRes : defaultResMap.getResources()) { if (resMap.contains(defaultRes.mName)) { @@ -212,6 +220,7 @@ public class MoreKeysResources { formatter.outElement(String.format("\"%s\",", escaped)); } successiveNull = false; + outputArraySize = formatter.getCurrentIndex(); } else { formatter.outElement("null,"); successiveNull = true; @@ -220,6 +229,7 @@ public class MoreKeysResources { if (!successiveNull) { formatter.flush(); } + return outputArraySize; } private static String addPrefix(final String prefix, final String lines) { diff --git a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/StringResourceMap.java b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/StringResourceMap.java index cc7ff6a9c..4eff8a24b 100644 --- a/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/StringResourceMap.java +++ b/tools/make-keyboard-text/src/com/android/inputmethod/keyboard/tools/StringResourceMap.java @@ -39,6 +39,12 @@ public class StringResourceMap { // Name to string resource map. private final Map<String, StringResource> mResourcesMap; + // The length of String[] that is created from this {@link StringResourceMap}. The length is + // calculated in {@link MoreKeysResources#dumpTexts(OutputStream)} and recorded by + // {@link #setOutputArraySize(int)}. The recorded length is used as a part of comment by + // {@link MoreKeysResources#dumpLanguageMap(OutputStream)} via {@link #getOutputArraySize()}. + private int mOutputArraySize; + public StringResourceMap(final InputStream is) { final StringResourceHandler handler = new StringResourceHandler(); final SAXParserFactory factory = SAXParserFactory.newInstance(); @@ -77,6 +83,14 @@ public class StringResourceMap { return mResourcesMap.get(name); } + public void setOutputArraySize(final int arraySize) { + mOutputArraySize = arraySize; + } + + public int getOutputArraySize() { + return mOutputArraySize; + } + static class StringResourceHandler extends DefaultHandler2 { private static final String TAG_RESOURCES = "resources"; private static final String TAG_STRING = "string"; |