+
+ static final class it_conj_ire<T extends AbstractWiktionaryParser> implements FunctionCallback<T> {
+ final it_conj<T> dest;
+ it_conj_ire(it_conj<T> dest) {
+ this.dest = dest;
+ }
+ @Override
+ public boolean onWikiFunction(final WikiTokenizer wikiTokenizer, final String name, final List<String> args,
+ final Map<String, String> namedArgs,
+ final T parser,
+ final AppendAndIndexWikiCallback<T> appendAndIndexWikiCallback) {
+ final String root = args.get(0);
+ final String i = name.equals("it-conj-cire") || name.equals("it-conj-cirsi") ? "i" : "";
+ final boolean si = name.equals("it-conj-irsi") || name.equals("it-conj-irsi-b") || name.equals("it-conj-cirsi");
+
+ passThroughOrFillIn(namedArgs, "inf", root + (si ? "irsi" : "ire"), false);
+ namedArgs.put("aux", ListUtil.get(args, 1, ""));
+ passThroughOrFillIn(namedArgs, "ger", root + "endo" + (si ? "si" : ""), true);
+ passThroughOrFillIn(namedArgs, "presp", root + "ente" + (si ? "si" : ""), true);
+ passThroughOrFillIn(namedArgs, "pastp", root + "ito", true);
+ if (si) {
+ passThroughOrFillIn(namedArgs, "pastp2", root + "itosi", true);
+ }
+ if (!name.endsWith("-b")) {
+ it_conj_passMood(namedArgs, "pres", false, root, Arrays.asList(i + "o", "i", "e", "iamo", "ite", i + "ono"));
+ } else {
+ it_conj_passMood(namedArgs, "pres", false, root, Arrays.asList("isco", "isci", "isce", "iamo", "ite", "iscono"));
+ }
+ it_conj_passMood(namedArgs, "imperf", false, root, Arrays.asList("ivo", "ivi", "iva", "ivamo", "ivate", "ivano"));
+ it_conj_passMood(namedArgs, "prem", false, root, Arrays.asList("ii", "isti", "ì", "immo", "iste", "irono"));
+ // Regular past historic synonyms:
+ passThroughOrFillIn(namedArgs, "prem3s2", root + "é", true);
+ passThroughOrFillIn(namedArgs, "prem3p2", root + "erono", true);
+ it_conj_passMood(namedArgs, "fut", true, root, Arrays.asList("irò", "irai", "irà", "iremo", "irete", "iranno"));
+ it_conj_passMood(namedArgs, "cond", true, root, Arrays.asList("irei", "iresti", "irebbe", "iremmo", "ireste", "irebbero"));
+
+ if (!name.endsWith("-b")) {
+ passThroughOrFillIn(namedArgs, "sub123s", root + i + "a", false);
+ passThroughOrFillIn(namedArgs, "sub3p", root + i + "ano", false);
+ } else {
+ passThroughOrFillIn(namedArgs, "sub123s", root + "isca", false);
+ passThroughOrFillIn(namedArgs, "sub3p", root + "iscano", false);
+ }
+ passThroughOrFillIn(namedArgs, "sub1p", root + "iamo", false);
+ passThroughOrFillIn(namedArgs, "sub2p", root + "iate", false);
+
+ passThroughOrFillIn(namedArgs, "impsub12s", root + "issi", false);
+ passThroughOrFillIn(namedArgs, "impsub3s", root + "isse", false);
+ passThroughOrFillIn(namedArgs, "impsub1p", root + "issimo", false);
+ passThroughOrFillIn(namedArgs, "impsub2p", root + "iste", false);
+ passThroughOrFillIn(namedArgs, "impsub3p", root + "issero", false);
+
+ if (!name.endsWith("-b")) {
+ passThroughOrFillIn(namedArgs, "imp2s", root + "i" + (si ? "ti" : ""), true);
+ passThroughOrFillIn(namedArgs, "imp3s", (si ? "si " : "") + root + i + "a", true);
+ passThroughOrFillIn(namedArgs, "imp3p", (si ? "si " : "") + root + i + "ano", true);
+ } else {
+ passThroughOrFillIn(namedArgs, "imp2s", root + "isci" + (si ? "ti" : ""), true);
+ passThroughOrFillIn(namedArgs, "imp3s", (si ? "si " : "") + root + "isca", true);
+ passThroughOrFillIn(namedArgs, "imp3p", (si ? "si " : "") + root + "iscano", true);
+ }
+ passThroughOrFillIn(namedArgs, "imp1p", root + "iamo" + (si ? "ci" : ""), true);
+ passThroughOrFillIn(namedArgs, "imp2p", root + "ite" + (si ? "vi" : ""), true);
+
+ return dest.onWikiFunction(wikiTokenizer, name, args, namedArgs, parser, appendAndIndexWikiCallback);
+ }
+ }
+