Download Jar. Uses 3874K of libraries. Click here for Pure Java version (12413L/87K).
1 | !7 |
2 | |
3 | sS in = 'Input, out = 'Output; |
4 | |
5 | static L<Map> data; |
6 | static JTable table; |
7 | static JComboBox cbFunction; |
8 | static L<HistoryEntry> history; |
9 | //static Var<Int> historyIdx; |
10 | static JLabel lblHistory; |
11 | |
12 | concept HistoryEntry { |
13 | L<Map> data; |
14 | S functionApplied; |
15 | } |
16 | |
17 | concept Code { |
18 | S code; |
19 | } |
20 | |
21 | p-subst { |
22 | newCase(); |
23 | db(); |
24 | history = persistentList("History"); |
25 | //historyIdx = persistentVar("History index", 0); |
26 | cbFunction = autoComboBox(asTreeSet(listPlus(standardFunctionNames(), "undo", "sort by input", "sort by output", "finish"))); |
27 | onEnter(cbFunction, f apply); |
28 | JComponent controls = centerAndEast(withLabel("Function:", cbFunction), jbutton("Apply", f apply)); |
29 | data = mapToListOfOrderedMap(sentenceTypeExamples(), in, out); |
30 | history.add(cnew(HistoryEntry, data := cloneList(data))); |
31 | table = showTable(data); |
32 | addToWindow(table, withMargin(controls)); |
33 | addToWindow(table, withMargin(lblHistory = jlabel())); |
34 | update(); |
35 | makeAndCall_warmUp("lower"); |
36 | } |
37 | |
38 | svoid apply { q.add(r { apply_doIt(getTextTrim(cbFunction)) }); } |
39 | static Q q = startQ(); |
40 | |
41 | svoid apply_doIt(fS fName) { |
42 | loading { |
43 | if (eqic("undo", fName)) { |
44 | if (l(history) < 2) { infoBox("Nothing to undo"); ret; } |
45 | S f = popLast(history).functionApplied; |
46 | infoBox("Undoing " + f); |
47 | HistoryEntry e = last(history); |
48 | data = e.data; |
49 | } else try { |
50 | if (eqic("sort by output", fName)) |
51 | data = sortedByMapElement(data, out); |
52 | else if (eqic("sort by input", fName)) |
53 | data = sortedByMapElement(data, in); |
54 | else if (eqic("finish", fName)) |
55 | makeCode(); |
56 | else |
57 | data = map(data, func(Map map) { |
58 | litorderedmap(in, makeAndCall(fName, map.get(in)), out, map.get(out)) }); |
59 | |
60 | history.add(cnew(HistoryEntry, functionApplied := fName, data := cloneList(data))); |
61 | } catch e { |
62 | messageBox(e); |
63 | ret; |
64 | } |
65 | table = showTable(table, data); |
66 | update(); |
67 | } |
68 | } |
69 | |
70 | svoid update { |
71 | S dt = "Data type: " + join("/", new TreeSet(map className(collectMapElement(data, in)))); |
72 | setText(lblHistory, dt + ". History: " + (l(history) <= 1 ? "-" : |
73 | join(" -> ", collect(dropFirst(history), 'functionApplied)))); |
74 | } |
75 | |
76 | svoid makeCode { |
77 | new MultiMap mm; |
78 | for (Map map : data) mm.put(map.get(in), map.get(out)); |
79 | L<S> functions = reversed(notStartingWith("sort by", collectNotNull(history, 'functionApplied))); |
80 | S mapCode = structureToJava(mapValues(f listToTopTen, multiMapToMap(mm))); |
81 | S code = "first(mapGet(" + mapCode + ", " + renderNestedFunctionCalls(functions, "input") + "))"; |
82 | cset(uniq(Code), +code); |
83 | showText("Code", code); |
84 | } |
Began life as a copy of #1010423
download show line numbers debug dex old transpilations
Travelled to 14 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, onxytkatvevr, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt
No comments. add comment
Snippet ID: | #1010430 |
Snippet name: | Work on sentenceTypeExamples using standard functions [OK] |
Eternal ID of this version: | #1010430/38 |
Text MD5: | b271cb9a37342096d7cbc7b4e30b39bb |
Transpilation MD5: | ee0630def17dccda5d8597f3877526d0 |
Author: | stefan |
Category: | javax / a.i. |
Type: | JavaX source code (desktop) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2017-09-18 00:36:31 |
Source code size: | 2683 bytes / 84 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 519 / 1204 |
Version history: | 37 change(s) |
Referenced in: | [show references] |