package oqube.muse.html;
import oqube.muse.AbstractTagHandler;
import oqube.muse.MuseTagHandler;
import oqube.muse.MuseSink;
import oqube.muse.SimpleTagHandler;
@author@norsys
@version
@plexus
public class MuseHTMLTagHandler extends AbstractTagHandler {
class Example extends SimpleTagHandler {
public void doHandle(MuseSink sink, String content) {
sink.rawText("<pre class=\"code\">");
sink.rawText(content);
sink.rawText("</pre>");
}
}
class Code extends SimpleTagHandler {
public void doHandle(MuseSink sink, String content) {
sink.rawText("<span class=\"code\">");
sink.text(content);
sink.rawText("</span>");
}
}
class Literal extends SimpleTagHandler {
public void doHandle(MuseSink sink, String content) {
sink.rawText(content);
}
}
class Comment extends SimpleTagHandler {
public void doHandle(MuseSink sink, String content) {
sink.rawText("<!-- ");
sink.rawText(content);
sink.rawText(" -->");
}
}
public MuseHTMLTagHandler() {
addTag("example", new Example());
addTag("code", new Code());
addTag("literal", new Literal());
addTag("comment", new Comment());
setNext(new MuseTagHandler() {
public boolean flow(MuseSink sink, String tag, String[][] at,
String content) {
sink.rawText("<span class=\"" + tag + "\"");
if (at != null)
for (int i = 0; i < at.length; i++)
sink.rawText(at[0] + "=" + at[1]);
sink.rawText(">");
sink.text(content);
sink.rawText("</span>");
return true;
}
public boolean block(MuseSink sink, String tag, String[][] at,
String content) {
sink.rawText("<div class=\"" + tag + "\"");
if (at != null)
for (int i = 0; i < at.length; i++)
sink.rawText(at[i][0] + "=" + at[i][1]);
sink.rawText(">");
sink.text(content);
sink.rawText("</div>");
return true;
}
});
}
}