Uses 1059K of libraries. Click here for Pure Java version (24823L/133K).
!7 //set flag SimpleCRUD_v2_debug. //set flag formLayouter1_debug. beaConcept BPattern { S text; toString { ret "[\*id*/] " + shortDynName(this) + " " + quote(text); } void reactWith(BInput input, IBEAReactor reactor) {} } beaConcept BStarPattern > BPattern { void reactWith(BInput input, IBEAReactor reactor) { LS mapping = matchesToStringList(flexMatchIC_first(text, input.text)); if (mapping == null) ret; reactor.uniqResult(BEAObject, type := "match", +input, pattern := this, +mapping); } } beaConcept BAngleVarPattern > BPattern { void reactWith(BInput input, IBEAReactor reactor) { SS mapping = flexMatchAngleBracketVarsIC_first(text, input.text); if (mapping == null) ret; reactor.uniqResult(BEAObject, type := "match", +input, pattern := this, +mapping); } } beaConcept BMatch { new Ref<BPattern> pattern; new Ref<BInput> input; SS mapping; } beaConcept BMatchToScenario { void reactWith(BMatch match, IBEAReactor reactor) { reactor.uniqResult(BEAObject, type := "scenario", text := mapToLines(match.mapping, (a, b) -> format_curly("* is a *.", b, a)); } } beaConcept BScenarioToOutput { bool canReactWith(BEAObject o) { ret o.typeIs("scenario"); } void reactWith(BEAObject scenario, IBEAReactor reactor) { reactor.uniqResult(BOutput, type := "Output", text := scenario~.text); } } beaConcept BFeedback { new Ref<BEAObject> on; S text; } cmodule2 > DynBEAReactor_textInOut { { input = "UBports community delivers 'second-largest release of Ubuntu Touch ever'"; } transient JButton btnSaveAsPattern; start { crud.showClassNameSelectors = true; crud.allowNewFields = true; crud.emptyStringsToNull = true; crud.humanizeFieldNames = false; dm_watchField input(r updateButtons); } void createInitialObjects { uniq BMatchToScenario(); uniq BScenarioToOutput(); //uniq BPattern(text := "* delivers *"); uniq BAngleVarPattern(text := "<company> delivers <product>"); } afterVisualize { JConceptsTable<BMatch> ct = new(BMatch); ct.humanizeFieldNames = false; ct.itemToMap_inner2 = m -> litorderedmap( input := m.input, pattern := m.pattern, mapping := m.mapping, feedback := collectFeedback(m)); addTab(bottomTabs, "Matches", withRightAlignedButtons(ct, tableDependentButton(ct.table(), "Mark OK", rThreadEnter { saveFeedback(ct.selected(), "OK"); }), tableDependentButton(ct.table(), "Give detailed feedback...", rThreadEnter { addFeedbackDialog(ct.selected()); }))); addComponent(inputButtons, btnSaveAsPattern = jThreadedButton("Save as pattern", r saveInputAsPattern)); updateButtons(); } void saveInputAsPattern { uniq(BAngleVarPattern, text := trim(input)); } void updateButtons { setEnabled(btnSaveAsPattern, containsAngleBracketVars(input)); } void addFeedbackDialog(BEAObject item) { inputText("Feedback for " + item, voidfunc(S text) { if (nempty(text = trim(text))) saveFeedback(item, text); }); } void saveFeedback(BEAObject item, S text) { uniq BFeedback(on := item, +text); } S collectFeedback(BEAObject item) { ret joinWithComma(collect text(conceptsWhere BFeedback(on := item))); } }
Began life as a copy of #1030776
download show line numbers debug dex old transpilations
Travelled to 4 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx, vouqrxazstgt
No comments. add comment
Snippet ID: | #1030822 |
Snippet name: | AGI Reactor 1 v2 [pattern + input => scenario] |
Eternal ID of this version: | #1030822/19 |
Text MD5: | 703304a375f9047a4d93d96221cfb223 |
Transpilation MD5: | d6af15b7d06bd40cc9837c67ddb57c59 |
Author: | stefan |
Category: | javax |
Type: | JavaX source code (Dynamic Module) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2021-03-31 16:00:56 |
Source code size: | 3534 bytes / 133 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 195 / 836 |
Version history: | 18 change(s) |
Referenced in: | [show references] |