Uses 911K of libraries. Click here for Pure Java version (5029L/26K).
1 | !7 |
2 | |
3 | srecord Guesser(S regexp, S annotation) {} |
4 | |
5 | cmodule CLAG > DynPrintLogAndEnabled { |
6 | new Map<S, LS> entries; // text -> annotations |
7 | L<Guesser> guessers = litsynclist(Guesser("eval", "eval command")); |
8 | |
9 | sclass ByCategory { |
10 | Guesser bestGuesser; |
11 | } |
12 | |
13 | start { |
14 | doEveryAndNow(5.0, r step); |
15 | } |
16 | |
17 | void step enter { |
18 | if (!enabled) ret; |
19 | |
20 | temp tempPrintTime(); |
21 | dm_clearModulePrintLog(); |
22 | |
23 | // find annotator module |
24 | S mod = annotator(); |
25 | if (empty(mod)) ret; |
26 | |
27 | // get visible rows |
28 | IntRange vis = cast quickImport(dm_rcall visibleRows(mod)); |
29 | if (vis == null) ret; |
30 | L<virtual Entry> allData = (L) dm_rcall data(mod); |
31 | L visibleData = subList(allData, vis); |
32 | |
33 | // get all annotations (without "!") |
34 | Set<S> allClasses = asCISet(dropPrefixAll("!", (Collection<S>) dm_rcall allAnnotations(mod))); |
35 | print(+allClasses); |
36 | |
37 | // update entry map |
38 | |
39 | fOr (virtual Entry e : allData) { |
40 | S text = getString text(e); |
41 | LS annotations = cast rcall annotations(e); |
42 | entries.put(text, annotations); |
43 | } |
44 | |
45 | // go through classes |
46 | |
47 | for (S c : allClasses) { |
48 | LS plusExamples = keysWhereValueContains(c, entries); |
49 | LS minusExamples = keysWhereValueContains("!" + c, entries); |
50 | print(c + ": " + l(plusExamples) + "/" + l(minusExamples)); |
51 | } |
52 | |
53 | // guess visible rows |
54 | |
55 | bool change; |
56 | fOr (virtual Entry e : visibleData) { |
57 | S text = getString text(e); |
58 | LS annotations = cast rcall annotations(e); |
59 | Set<S> guesses = ciSet(); |
60 | for (Guesser guesser : guessers) |
61 | if (regexpFindIC(guesser.regexp, text)) |
62 | guesses.add(guesser.annotation); |
63 | S guess = joinWithComma(guesses); |
64 | if (set_trueIfChanged(e, +guess)) set change; |
65 | } |
66 | if (change) dm_rcall fireDataChanged(mod); |
67 | } |
68 | |
69 | S annotator() { |
70 | ret dm_moduleWithSnippetID(#1024172); |
71 | } |
72 | } |
download show line numbers debug dex old transpilations
Travelled to 6 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt
No comments. add comment
Snippet ID: | #1024174 |
Snippet name: | Chat Line Annotation Guesser [dev.] |
Eternal ID of this version: | #1024174/20 |
Text MD5: | 046fe6296c06567176ec6cf740cc8f69 |
Transpilation MD5: | 789b8dc42beea758717978ed3bb0c5cc |
Author: | stefan |
Category: | javax / stefan's os / a.i |
Type: | JavaX source code (Dynamic Module) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2019-07-24 19:29:34 |
Source code size: | 1979 bytes / 72 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 262 / 655 |
Version history: | 19 change(s) |
Referenced in: | [show references] |