annotate src/luan/modules/HtmlLuan.java @ 1712:36c28be6d432

improve html and bbcode
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 14 Jul 2022 22:14:21 -0600
parents 21f5edab1fbf
children 31a82b0d0a87
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
167
4c0131c2b650 merge luan/lib into modules
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 142
diff changeset
1 package luan.modules;
49
8ede219cd111 add WebShell
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
2
318
4fe6c9fed486 add html processing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 302
diff changeset
3 import java.util.List;
4fe6c9fed486 add html processing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 302
diff changeset
4 import java.util.ArrayList;
4fe6c9fed486 add html processing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 302
diff changeset
5 import java.util.Set;
4fe6c9fed486 add html processing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 302
diff changeset
6 import java.util.HashSet;
1712
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
7 import goodjava.html.Html;
49
8ede219cd111 add WebShell
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
8 import luan.LuanTable;
124
f537ff5e511d minor cleanup
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 112
diff changeset
9 import luan.LuanException;
49
8ede219cd111 add WebShell
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
10
8ede219cd111 add WebShell
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
11
168
ebe9db183eb7 rename *Lib.java to *Luan.java
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 167
diff changeset
12 public final class HtmlLuan {
49
8ede219cd111 add WebShell
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
13
646
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 625
diff changeset
14 public static String encode(String s) throws LuanException {
cdc70de628b5 simplify LuanException
Franklin Schmidt <fschmidt@gmail.com>
parents: 625
diff changeset
15 Utils.checkNotNull(s);
1712
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
16 return Html.encode(s);
49
8ede219cd111 add WebShell
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
17 }
8ede219cd111 add WebShell
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
18
1341
a015a0b5c388 add Html.decode(), Lucene.count_tokens(), lucene boosts, Sql.database.set()
Franklin Schmidt <fschmidt@gmail.com>
parents: 1333
diff changeset
19 public static String decode(String s) {
1712
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
20 return Html.decode(s);
318
4fe6c9fed486 add html processing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 302
diff changeset
21 }
4fe6c9fed486 add html processing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 302
diff changeset
22
1712
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
23 private static LuanTable tag(Html.Tag tag) throws LuanException {
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
24 LuanTable tbl = new LuanTable();
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
25 tbl.rawPut("type","tag");
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
26 tbl.rawPut("name",tag.name);
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
27 tbl.rawPut("attributes",new LuanTable(tag.attributes));
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
28 tbl.rawPut("is_empty",tag.isEmpty);
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
29 tbl.rawPut("raw",tag.raw);
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
30 return tbl;
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
31 }
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
32 public static LuanTable parse(String text,LuanTable containerTagsTbl) {
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
33 try {
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
34 Set<String> containerTags = new HashSet();
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
35 for( Object s : containerTagsTbl.asList() ) {
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
36 containerTags.add((String)s);
318
4fe6c9fed486 add html processing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 302
diff changeset
37 }
1712
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
38 List list = Html.parse(text,containerTags);
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
39 List rtn = new ArrayList();
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
40 for( Object el : list ) {
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
41 if( el instanceof String ) {
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
42 rtn.add(el);
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
43 } else if( el instanceof Html.Tag ) {
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
44 Html.Tag tag = (Html.Tag)el;
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
45 rtn.add(tag(tag));
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
46 } else if( el instanceof Html.Comment ) {
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
47 Html.Comment comment = (Html.Comment)el;
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
48 LuanTable tbl = new LuanTable();
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
49 tbl.rawPut("type","comment");
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
50 tbl.rawPut("text",comment.text);
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
51 rtn.add(tbl);
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
52 } else if( el instanceof Html.CData ) {
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
53 Html.CData cdata = (Html.CData)el;
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
54 LuanTable tbl = new LuanTable();
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
55 tbl.rawPut("type","cdata");
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
56 tbl.rawPut("text",cdata.text);
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
57 rtn.add(tbl);
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
58 } else if( el instanceof Html.Container ) {
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
59 Html.Container container = (Html.Container)el;
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
60 LuanTable tbl = new LuanTable();
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
61 tbl.rawPut("type","container");
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
62 tbl.rawPut("tag",tag(container.tag));
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
63 tbl.rawPut("text",container.text);
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
64 rtn.add(tbl);
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
65 } else {
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
66 throw new RuntimeException("invalid el "+el);
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
67 }
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
68 }
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
69 return new LuanTable(rtn);
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
70 } catch(LuanException e) {
36c28be6d432 improve html and bbcode
Franklin Schmidt <fschmidt@gmail.com>
parents: 1469
diff changeset
71 throw new RuntimeException(e);
318
4fe6c9fed486 add html processing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 302
diff changeset
72 }
4fe6c9fed486 add html processing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 302
diff changeset
73 }
4fe6c9fed486 add html processing
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents: 302
diff changeset
74
49
8ede219cd111 add WebShell
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff changeset
75 }