1 package com.hughes.android.dictionary.parser.enwiktionary;
5 import java.util.logging.Logger;
7 import com.hughes.android.dictionary.parser.WikiTokenizer;
8 import com.hughes.util.ListUtil;
10 public interface FunctionCallback {
12 static final Logger LOG = Logger.getLogger(EnWiktionaryXmlParser.class.getName());
14 boolean onWikiFunction(
16 final List<String> args,
17 final Map<String,String> namedArgs,
18 final EnWiktionaryXmlParser parser,
19 final AppendAndIndexWikiCallback appendAndIndexWikiCallback,
22 static final class TranslationCallback implements FunctionCallback {
24 public boolean onWikiFunction(final String name, final List<String> args,
25 final Map<String, String> namedArgs, final EnWiktionaryXmlParser parser,
26 final AppendAndIndexWikiCallback appendAndIndexWikiCallback,
29 final String transliteration = namedArgs.remove("tr");
31 if (args.size() < 2 || args.size() > 3 || namedArgs.isEmpty()) {
32 LOG.warning("{{t}} with too few args: " + ", title=" + title);
35 final String langCode = ListUtil.get(args, 0);
36 final String word = ListUtil.get(args, 1);
37 final String gender = ListUtil.get(args, 2);
39 // TODO appendAndIndexWikiCallback we're inside translation....
40 //EntryTypeName.WIKTIONARY_TITLE_SINGLE, EntryTypeName.WIKTIONARY_TITLE_MULTI
41 new WikiTokenizer(word, false).dispatch(appendAndIndexWikiCallback);
44 appendAndIndexWikiCallback.builder.append(String.format(" {%s}", gender));
46 if (transliteration != null) {
47 // TODO appendAndIndexWikiCallback we're inside translation....
48 // EntryTypeName.WIKTIONARY_TRANSLITERATION
49 appendAndIndexWikiCallback.builder.append("(tr. ");
50 new WikiTokenizer(transliteration).dispatch(appendAndIndexWikiCallback);
51 appendAndIndexWikiCallback.builder.append(")");
58 // ------------------------------------------------------------------
60 static final class QualifierCallback implements FunctionCallback {
62 public boolean onWikiFunction(final String name, final List<String> args,
63 final Map<String, String> namedArgs,
64 final EnWiktionaryXmlParser parser,
65 final AppendAndIndexWikiCallback appendAndIndexWikiCallback,
67 if (args.size() != 1 || !namedArgs.isEmpty()) {
68 LOG.warning("weird qualifier: ");
71 String qualifier = args.get(0);
73 appendAndIndexWikiCallback.builder.append("(");
74 new WikiTokenizer(qualifier, false).dispatch(appendAndIndexWikiCallback);
75 appendAndIndexWikiCallback.builder.append(")");