!7 sclass FullSpeechLogAsTable extends DynObjectTable { class Entry { S fullLine, time, text, comments; } start { dontPersist(); setData(map(func(S line) -> Entry { makeEntry(line) }, scanLog(speechRecognitionLog())); onSpeechRecognized_raw(voidfunc(S line) { add(makeEntry(line)) }); } Entry makeEntry(S line) { ret nu(Entry, fullLine := line, text := speechRecognitionLog_extractUtterance(line), time := formatLocalDateWithMilliseconds(parseLeadingLong(line))); } L getList() { ret syncCloneList(data); } }