Warning: session_start(): open(/var/lib/php/sessions/sess_rinhvu6bl33ht6np4foahcksak, 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
sinterface StringFunc {
S get(S s);
}
static O in;
static L markedStrings;
p {
if (in == null) // may have been set by hotwire client
in = "create table `bla`(hello int);";
if (args.length != 0) in = loadSnippet(args[0]);
S s = [[
mysqltok input
find "insert" ... ";"
]];
L ll = toLinesFullTrim(s);
//System.out.println(ll);
// remove comments
ll = map(ll, func(S s) -> S { s.replaceAll("//.*$", "").trim() });
L tok = null;
for (S c : ll) {
if (eq(c, "mysqltok input"))
in = tok = mysqlTok((String) in);
else if (c.startsWith("find")) {
L pat = javaTok(c);
pat.remove(0); pat.remove(0);
L inp = cast in;
//System.out.println("inp: " + inp);
//System.out.println("pat: " + pat);
in = matchTokensList(inp, pat);
//System.out.println("Result: " + structure(in));
}
}
if (in instanceof List) {
List list = cast in;
markedStrings = getMarkedStrings(tok, list);
markTokens(tok, list);
in = join(tok);
System.out.println("Markings found: " + size(list));
for (int[] ij : list) {
S bla = join(tok.subList(ij[0], ij[1]+1));
System.out.println("Got: " + bla);
}
}
}
static List getMarkedStrings(L tok, L markings) {
new L result;
for (int i = 0; i < markings.size(); i++)
result.add(join(tok.subList(markings.get(i)[0], markings.get(i)[1])));
return result;
}
static int size(Object o) {
return ((List) o).size();
}
static void markTokens(L tok, L marks) {
System.out.println(tok.size());
for (int i = 0; i < tok.size(); i++) {
String t = tok.get(i);
if (isStartMark(i, marks))
t = "[[" + t;
if (isEndMark(i, marks))
t += "]]";
tok.set(i, t);
}
}
static boolean isStartMark(int i, L marks) {
for (int[] ij : marks)
if (ij[0] == i)
return true;
return false;
}
static boolean isEndMark(int i, L marks) {
for (int[] ij : marks)
if (ij[1] == i+1)
return true;
return false;
}