!7 static new L data; p { S text = loadSnippet(#1008407); data.clear(); for (S line : toLinesFullTrim(text)) { if (line.startsWith("#")) continue; //print(line); L split = split3(line); printWithRisingIndent(split); data.add(litorderedmap( "Original Paragraph" := htmlencode(line), "Split" := htmlEncode_nlToBr(lines(split)))); } serveHttpOpenBrowser(4000); } static NanoHTTPD.Response serve(S uri, NanoHTTPD.Method method, Map header, Map parms, Map files) { ret serveHTML(hhtml( hhead(htitle("Yay")) + hbody(h3("Yay") + hform(htable_noEncode(data) + p(hsubmit()))))); } static L split1(S s) { int i = 0; new L l; while (i <= l(s)) { int j = smartIndexOf(s, ".", i)+1; addIfNempty(l, trim(substring(s, i, j))); i = j; } ret l; } static L split2x(L s) { int i = 0; new L l; while (i <= l(s)) { int j = smartIndexOf(s, ".", i)+1; addIfNempty(l, trim(join(subList(s, i, j)))); i = j; } ret l; } static L split3(S s) { ret split2x(nlTok3(s)); }