!752 p { S src = loadSnippet("#1002128"); // original as dictated through google voice recognition src = executeReplacements(loadSnippet("#1002129"), src, false); // correct dictation errors src = strings(src); src = executeReplacements(loadSnippet("#1002131"), src, true); // translate to CODE (JavaX) print(); print(src); createTempProgram(src, "WTF Bot (translated from dictation)"); } static S executeReplacements(S rep, S src, boolean withNewlines) { L tok = javaTok(src); L lines = toLinesFullTrim(rep); for (S line : lines) { L tokl = javaTok(line); int i = tokl.indexOf("="); S in, out; if (i >= 0) { in = trim(join(tokl.subList(0, i))); out = trim(join(subList(tokl, i+1))); } else if (l(tokl) != 5) { print("bad line, ignoring: " + quote(line)); continue; } else { in = unquote(tokl.get(1)); out = unquote(tokl.get(3)); } print(format("Replacing: * with *", in, out)); jreplace(tok, in, withNewlines ? out + "\n" : out, true, true); } ret join(tok); } static S strings(S src) { L tok = javaTok(src); for (int n = 0; n < 10000; n++) { int i = findCodeTokens(tok, true, "string", "begin"); if (i < 0) break; clearAllTokens(tok.subList(i, i+4)); // code to N tok.set(i, "\""); } for (int n = 0; n < 10000; n++) { int i = findCodeTokens(tok, true, "string", "end"); if (i < 0) break; clearAllTokens(tok.subList(i-1, i+3)); // N to code tok.set(i, "\""); } ret join(tok); }