!include #1003413 // LooseBot v5 sclass DateAdapter extends WordAdapter2 { static L months = splitAtSpace("___ January February March April May June July August September October November December"); S lookupToken(S s) { int i = indexOf(months, s); if (i >= 0) pcall { S j = lookupToken(str(i)); print("Month found! " + s + " => " + i + " => " + j); if (nempty(j)) ret months.get(parseInt(j)); } ret super.lookupToken(s); } S get(S s) { S o = countFixer(super.get(s)); print("count fixed: " + o); ret o; } } static O makeBot = func { LooseBot bot = new LooseBot(botTree, func { new DateAdapter }) { bool isCommand(E e) { ret !isInput(e); } // see Dialog Optimizer bool isInput(E e) { ret e.q() || e.state() && matchStart("result is ", e.text()); } }; bot.debug = true; ret bot; }; svoid expandDialogs(L dialogs) { for (Dialog d : dialogs) for (int i = 0; i < l(d.poem); i++) { E e = d.poem.get(i); if (!e.state()) continue; int idx = e.text().indexOf('='); if (idx < 0) continue; d.poem.set(i, E.state("get " + e.text().substring(0, idx))); d.poem.add(i+1, E.state("result is " + e.text().substring(idx+1))); } }