aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/dicttool/src/com/android/inputmethod/latin/dicttool/Info.java48
1 files changed, 46 insertions, 2 deletions
diff --git a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Info.java b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Info.java
index 98a4e8fa3..6f1c020f2 100644
--- a/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Info.java
+++ b/tools/dicttool/src/com/android/inputmethod/latin/dicttool/Info.java
@@ -18,9 +18,12 @@ package com.android.inputmethod.latin.dicttool;
import com.android.inputmethod.latin.makedict.FormatSpec;
import com.android.inputmethod.latin.makedict.FusionDictionary;
+import com.android.inputmethod.latin.makedict.FusionDictionary.CharGroup;
import com.android.inputmethod.latin.makedict.FusionDictionary.WeightedString;
import com.android.inputmethod.latin.makedict.Word;
+import java.util.ArrayList;
+
public class Info extends Dicttool.Command {
public static final String COMMAND = "info";
@@ -59,14 +62,55 @@ public class Info extends Dicttool.Command {
+ " whitelist entries)");
}
+ private static void showWordInfo(final FusionDictionary dict, final String word) {
+ final CharGroup group = dict.findWordInTree(dict.mRoot, word);
+ if (null == group) {
+ System.out.println(word + " is not in the dictionary");
+ return;
+ }
+ System.out.println("Word: " + word);
+ System.out.println(" Freq: " + group.getFrequency());
+ if (group.getIsNotAWord()) {
+ System.out.println(" Is not a word");
+ }
+ if (group.getIsBlacklistEntry()) {
+ System.out.println(" Is a blacklist entry");
+ }
+ final ArrayList<WeightedString> shortcutTargets = group.getShortcutTargets();
+ if (null == shortcutTargets || shortcutTargets.isEmpty()) {
+ System.out.println(" No shortcuts");
+ } else {
+ for (final WeightedString shortcutTarget : shortcutTargets) {
+ System.out.println(" Shortcut target: " + shortcutTarget.mWord + " ("
+ + (FormatSpec.SHORTCUT_WHITELIST_FREQUENCY == shortcutTarget.mFrequency
+ ? "whitelist" : shortcutTarget.mFrequency) + ")");
+ }
+ }
+ final ArrayList<WeightedString> bigrams = group.getBigrams();
+ if (null == bigrams || bigrams.isEmpty()) {
+ System.out.println(" No bigrams");
+ } else {
+ for (final WeightedString bigram : bigrams) {
+ System.out.println(" Bigram: " + bigram.mWord + " (" + bigram.mFrequency + ")");
+ }
+ }
+ }
+
@Override
public void run() {
if (mArgs.length < 1) {
throw new RuntimeException("Not enough arguments for command " + COMMAND);
}
final String filename = mArgs[0];
+ final boolean hasWordArguments = (1 == mArgs.length);
final FusionDictionary dict = BinaryDictOffdeviceUtils.getDictionary(filename,
- true /* report */);
- showInfo(dict);
+ hasWordArguments /* report */);
+ if (hasWordArguments) {
+ showInfo(dict);
+ } else {
+ for (int i = 1; i < mArgs.length; ++i) {
+ showWordInfo(dict, mArgs[i]);
+ }
+ }
}
}