!7 cmodule2 FollowSkypeBot > DynPrintLog { File logFile() { ret userDir("dev/skype-bot/skype.log"); } start-thread { printFileInfo(logFile()); for (S line : linesFromFile(logFile())) handleLine(line); } void handleLine(S line) pcall { new Matches m; if (startsWith(line, "Message: ", m)) { //print(m.rest()); Map map = jsonDecodeMap(m.rest()); //pnl(map); Map resource = cast mapGet(map, "resource"); //pnl(resource); S content = cast mapGet(resource, "content"); if (nempty(content)) { print("Content: " + /*htmlDecode*/(content)); LS tok = htmlTok(content); new StringBuilder out; for (int i = 0; i < l(tok); i++) { if (odd(i)) { S tag = getTag(tok.get(i)); if (!eqicOneOf(tag, "b", "i")) { // skip any other tags int j = findEndOfContainerTag(tok, i); i = j < 0 ? l(tok) : j-1; if (eqic(tag, "ss")) out.append(":" + tagParam type(tok.get(i)) + ":"); } } else out.append(htmlDecode(tok.get(i)); } print("Cleaned: " + out); } } } }