Mercurial Hosting > luan
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 |
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 } |