!7 set flag AllowMetaCode. set flag Reparse. meta-transformNow { tok_standardBot } standard bot WeNeed { Set db = ciSet(); S add(S s) { if (db.add(s)) change(); null; } S remove(S s) { ret db.remove(s) ? with(r change, "What a relief") : null; } S listWithPattern(S pat) { ret or2(lines(map(db, x -> format(ellipsisToStar(pat), x))), "nothing"); } S clearAfterConfirm() { ret "You're kidding, right?"; } sync S processSimplifiedLine(S s, O... _) { try answer super.processSimplifiedLine(s, _); new Matches m; meta { S program = [[ We need ... = + We have ... = - Someone gave us ...|Someone gave me ... = - What do we need = listWithPattern("We need ...") We don't need ... anymore = - We need nothing|We don't need anything = clear after confirm ]]; ret replaceLineEquations((l, r) -> "if (matchX2(\*quote(l)*/, s, m)) ret \*r*/;", jreplace_multi(program, "+", "add(\\$1);", "-", "remove(\\$1);", "clear after confirm", "clearAfterConfirm();")); } null; } }