Warning: session_start(): open(/var/lib/php/sessions/sess_3sfm60eg2l6fockda93qggg63r, 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
cmodule SmartParser > DynTextArea {
transient SingleComponentPanel scp;
transient L parsed;
visual jvsplit(super, jCenteredSection("Parsed", scp = singleComponentPanel(makeComponent())));
start {
dm_watchFieldAndNow text(r parse);
}
void parse {
setField(parsed := map ext_fullToString(smartParser1_generic(text)));
if (scp != null)
scp.setComponent(makeComponent());
}
JComponent makeComponent() {
pnl(+parsed);
ret jscroll(jTree_hideRoot(jDynamicTree(
(O) parsed, o -> makeChildren(o), makeChildrenIsFast := true)));
}
Cl makeChildren(O o) {
o = fullyUnpackVar(o);
if (o cast Cl) ret o;
if (o cast S) ret subParse(o);
null;
}
L subParse(S s) {
// drop outer brackets, keep first spacing if it's pythonesque
s = tok_deRoundOrCurlyBracket_keepFirstSpacing(s);
s = withoutLeadingLinesEmptyAfterTrim(s);
bool lineByLine = ai_isLineByLine(s);
if (lineByLine) ret tlftj(s);
// find logic rule
LS l = tok_splitAtDoubleArrow(s);
if (l(l) > 1) ret intersperse("=>", l);
ret wordTokC(s);
}
}