panda.doc.markdown.html.CustomizeDecorator Maven / Gradle / Ivy
package panda.doc.markdown.html;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
public class CustomizeDecorator extends DefaultDecorator {
private static class HtmlAttributes {
private Map> attsByTag = new HashMap>();
public HtmlAttributes put(String tagName, String attName, String attValue) {
Map atts = attsByTag.get(tagName);
if (atts == null) {
atts = new LinkedHashMap();
attsByTag.put(tagName, atts);
}
atts.put(attName, attValue);
return this;
}
public Map get(String tagName) {
return attsByTag.get(tagName);
}
}
private HtmlAttributes attributes = new HtmlAttributes();
public CustomizeDecorator addAttribute(String name, String value, String ...tags) {
for (String tag : tags) {
attributes.put(tag, name, value);
}
return this;
}
public CustomizeDecorator addCssClass(String styleClass, String ...tags) {
for (String tag : tags) {
attributes.put(tag, "class", styleClass);
}
return this;
}
private boolean open(StringBuilder out, String tagName) {
return open(out, tagName, true);
}
private boolean open(StringBuilder out, String tagName, boolean closed) {
Map atts = attributes.get(tagName);
if(atts != null) {
out.append("<");
out.append(tagName);
Iterator it = atts.keySet().iterator();
while(it.hasNext()) {
String key = it.next();
String value = atts.get(key);
out.append(" ");
out.append(key);
out.append("=\"");
out.append(value);
out.append("\"");
out.append(" ");
}
if(closed) {
out.append(">");
}
return true;
}
return false;
}
@Override
public void openParagraph(StringBuilder out) {
if(!open(out, "p"))
super.openParagraph(out);
}
@Override
public void openBlockquote(StringBuilder out) {
if(!open(out, "blockquote"))
super.openBlockquote(out);
}
@Override
public void openCodeBlock(StringBuilder out) {
if(!open(out, "pre"))
super.openCodeBlock(out);
}
@Override
public void openCodeSpan(StringBuilder out) {
if(!open(out, "code"))
super.openCodeSpan(out);
}
@Override
public void openHeadline(StringBuilder out, int level) {
if(!open(out, "h"+level, false))
super.openHeadline(out, level);
}
@Override
public void openStrong(StringBuilder out) {
if(!open(out, "strong"))
super.openStrong(out);
}
@Override
public void openStrike(StringBuilder out) {
if(!open(out, "s"))
super.openStrike(out);
}
@Override
public void openEmphasis(StringBuilder out) {
if(!open(out, "em"))
super.openEmphasis(out);
}
@Override
public void openSuper(StringBuilder out) {
if(!open(out, "super"))
super.openSuper(out);
}
@Override
public void openOrderedList(StringBuilder out) {
if(!open(out, "ol"))
super.openOrderedList(out);
}
@Override
public void openUnorderedList(StringBuilder out) {
if(!open(out, "ul"))
super.openUnorderedList(out);
}
@Override
public void openListItem(StringBuilder out) {
if(!open(out, "li", false))
super.openListItem(out);
}
@Override
public void horizontalRuler(StringBuilder out) {
if(open(out, "hr", false)) {
out.append("/>");
}
else {
super.horizontalRuler(out);
}
}
@Override
public void openLink(StringBuilder out) {
if(!open(out, "a", false))
super.openLink(out);
}
@Override
public void openImage(StringBuilder out) {
if(!open(out, "img", false))
super.openImage(out);
}
// @Override
// public void openLink(StringBuilder out) {
// out.append("");
// }
//
// @Override
// public void openParagraph(StringBuilder out) {
// if(useCompactStyle) {
// out.append("");
// }
// else {
// super.openParagraph(out);
// }
// }
//
// @Override
// public void openHeadline(StringBuilder out, int level) {
// super.openHeadline(out, level);
// if(useCompactStyle) {
// out.append(" style=\"font-size:100%; padding:0px; margin:0px;\"");
// }
// }
//
// @Override
// public void openOrderedList(StringBuilder out) {
// if(useCompactStyle) {
// openParagraph(out);
// }
// else {
// super.openOrderedList(out);
// }
// }
//
// @Override
// public void openUnorderedList(StringBuilder out) {
// if(useCompactStyle) {
// openParagraph(out);
// }
// else {
// super.openUnorderedList(out);
// }
// }
//
// @Override
// public void openListItem(StringBuilder out) {
// if(useCompactStyle) {
// openParagraph(out);
// out.append(" * ");
// }
// else {
// super.openListItem(out);
// }
// }
//
// @Override
// public void closeOrderedList(StringBuilder out) {
// if(useCompactStyle) {
// closeParagraph(out);
// }
// else {
// super.closeOrderedList(out);
// }
// }
//
// @Override
// public void closeUnorderedList(StringBuilder out) {
// if(useCompactStyle) {
// closeParagraph(out);
// }
// else {
// super.closeUnorderedList(out);
// }
// }
//
// @Override
// public void closeListItem(StringBuilder out) {
// if(useCompactStyle) {
// closeParagraph(out);
// }
// else {
// super.closeListItem(out);
// }
// }
//
}