Warning: session_start(): open(/var/lib/php/sessions/sess_ljcu1rm12ur503gqnetabao792, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
!7
concept RewriteExample {
S in, out;
RewriteExample madeFrom;
}
concept Result {
S out
RewriteExample using;
}
cmodule RewriteDatabase {
transient CRUD rewriteExamplesCRUD;
transient CRUD resultsCRUD;
transient SingleComponentPanel scpSuggestions;
transient ReliableSingleThread rstMakeSuggestions = dm_rst(me(), r makeSuggestions);
S input;
start {
rewriteExamplesCRUD = CRUD(RewriteExample);
resultsCRUD = CRUD(Result);
}
visualize {
JComponent c = jtabs(
"Rewrite Examples",
centerAndSouthWithMargin(
rewriteExamplesCRUD.visualize(),
jCenteredSection("Suggestions", jMinHeight(100, scpSuggestions = singleComponentPanel()))),
"Input",
northAndCenterWithMargins(
dm_centeredTextFieldAsSection input(),
jCenteredSection("Results", resultsCRUD.visualize()))
);
onTableSelectionChanged(rewriteExamplesCRUD.table(), rstMakeSuggestions);
onConceptChangeByClass RewriteExample(rstMakeSuggestions);
ret c;
}
void makeSuggestions {
RewriteExample e = rewriteExamplesCRUD.selected(), ret if null;
new L buttons;
S transferred = transferCurlyBracketPhrases(e.out, e.in);
if (neq(transferred, e.in))
buttons.add(jbutton("Change LHS to: " + transferred, r { cset(e, in := transferred) }));
Set sharedPhrases = sharedCurlyBracketPhrases(e.in, e.out);
if (nempty(sharedPhrases)) {
S var = firstUnusedCountingDollarVar(e.in);
for (S phrase : sharedPhrases) {
S in2 = jreplaceIC_literal(e.in, curly(phrase), var);
S out2 = jreplaceIC_literal(e.out, curly(phrase), var);
if (!hasConceptIC RewriteExample(in := in2, out := out2))
buttons.add(jbutton("Replace " + curly(phrase) + " with " + var, r {
cset(uniqIC_returnIfNew RewriteExample(in := in2, out := out2), madeFrom := e)
}));
}
}
for (RewriteExampleExample e2) {
if (containsDollarVars(e2.in))
for (SS map : flexMatchDollarVarsIC_all(e2.in, e.in))
}
setComponent(scpSuggestions, scrollableStackWithSpacing(buttons));
}
}