Rev 95 |
Go to most recent revision |
Blame |
Compare with Previous |
Last modification |
View Log
| RSS feed
package org.kawai.tag.kcode;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.jsp.PageContext;
public class Code
implements KCode
{
@
Override
public boolean hasBody
() {
return true;
}
@
Override
public String getTag
() {
return "code";
}
@
Override
public String process
(PageContext context,
Map<String,
String> attrs,
String html
) {
StringBuilder sb =
new StringBuilder(1024 * 10);
boolean indent =
true;
if (attrs.
containsKey("ul")) {
indent = attrs.
get("ul").
equals("true");
}
if (indent
) sb.
append("<ul>");
sb.
append(buildOpenShTag
(attrs
));
sb.
append(html
);
sb.
append("</pre>");
if (indent
) sb.
append("</ul>");
return sb.
toString();
}
private static String buildOpenShTag
(Map<String,
String> map
) {
StringBuilder sb =
new StringBuilder(256);
sb.
append("<pre class=\"");
if (map.
containsKey("brush")) {
sb.
append("brush: ").
append(map.
get("brush")).
append(";");
} else {
sb.
append("brush: java;");
}
map.
remove("brush");
if (map.
containsKey("highlight")) {
sb.
append(" highlight: [").
append(map.
get("highlight")).
append("];");
}
map.
remove("highlight");
Iterator<String> iter = map.
keySet().
iterator();
while(iter.
hasNext()) {
String name = iter.
next();
if (name.
equals("ul")) continue;
String value = map.
get(name
);
sb.
append(" ").
append(name
).
append(": ").
append(value
).
append(";");
}
sb.
append("\">");
return sb.
toString();
}
}