!747 !pcall { m { static S inputID = "#1001532"; // Eins etc. static new L fields; static new L> rows; p { for (S line : toLinesFullTrim(loadSnippet(inputID))) try { new Matches m; if (match3("a structure with * fields: ...", line, m)) { fields.clear(); for (int i = 1; i < l(m.m); i++) { S s = m.unq(i); if (!eq(s, ",")) fields.add(s); } print(l(fields) + " field(s)"); } else { L tok = javaTok(line); new Map row; for (int i = 1; i < l(tok); i += 2) { S field = unquote(tok.get(i)); if (!eq(tok.get(i+2), "=")) fail("huh?"); i += 4; S val = unquote(tok.get(i)); row.put(field, val); if (i+2 < l(tok)) { i += 2; if (!eq(tok.get(i), ",")) fail("huh 2?"); } } rows.add(row); } } catch (Exception e) { e.printStackTrace(); print("Was parsing: " + quote(line)); } print(l(fields) + " field(s), " + l(rows) + " row(s)."); } }