Rev 95 | Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
93 | soliveira | 1 | package org.kawai.tag.kcode; |
2 | |||
3 | import java.util.Iterator; |
||
4 | import java.util.Map; |
||
5 | |||
6 | import javax.servlet.jsp.PageContext; |
||
7 | |||
8 | public class Code implements KCode { |
||
9 | |||
10 | @Override |
||
11 | public boolean hasBody() { |
||
12 | return true; |
||
13 | } |
||
14 | |||
15 | @Override |
||
16 | public String getTag() { |
||
17 | return "code"; |
||
18 | } |
||
19 | |||
20 | @Override |
||
21 | public String process(PageContext context, Map<String, String> attrs, String html) { |
||
22 | |||
23 | StringBuilder sb = new StringBuilder(1024 * 10); |
||
24 | |||
25 | boolean indent = true; |
||
26 | |||
27 | if (attrs.containsKey("ul")) { |
||
28 | indent = attrs.get("ul").equals("true"); |
||
29 | } |
||
30 | |||
31 | if (indent) sb.append("<ul>"); |
||
32 | sb.append(buildOpenShTag(attrs)); |
||
33 | sb.append(html); |
||
34 | sb.append("</pre>"); |
||
35 | if (indent) sb.append("</ul>"); |
||
36 | return sb.toString(); |
||
37 | } |
||
38 | |||
39 | private static String buildOpenShTag(Map<String, String> map) { |
||
40 | StringBuilder sb = new StringBuilder(256); |
||
41 | sb.append("<pre class=\""); |
||
42 | if (map.containsKey("brush")) { |
||
43 | sb.append("brush: ").append(map.get("brush")).append(";"); |
||
44 | } else { |
||
45 | sb.append("brush: java;"); |
||
46 | } |
||
47 | map.remove("brush"); |
||
48 | if (map.containsKey("highlight")) { |
||
49 | sb.append(" highlight: [").append(map.get("highlight")).append("];"); |
||
50 | } |
||
51 | map.remove("highlight"); |
||
52 | Iterator<String> iter = map.keySet().iterator(); |
||
53 | while(iter.hasNext()) { |
||
54 | String name = iter.next(); |
||
55 | if (name.equals("ul")) continue; |
||
56 | String value = map.get(name); |
||
57 | sb.append(" ").append(name).append(": ").append(value).append(";"); |
||
58 | } |
||
59 | sb.append("\">"); |
||
60 | return sb.toString(); |
||
61 | } |
||
62 | } |