package info.bliki.wiki.filter; import info.bliki.htmlcleaner.Utils; import info.bliki.wiki.model.Configuration; import info.bliki.wiki.model.IWikiModel; import info.bliki.wiki.tags.HTMLTag; import info.bliki.wiki.tags.WPTag; import info.bliki.wiki.tags.util.TagStack; import java.io.IOException; import java.util.HashMap; import java.util.Map; public class WPBlockQuote extends WPTag { private String contents = ""; private Map<String, String> fAttributes; public WPBlockQuote() { super("{quote}"); fAttributes = null; } public void setContents(String contents) { this.contents = contents; } @Override public void renderHTML(ITextConverter converter, Appendable buf, IWikiModel wikiModel) throws IOException { if (NEW_LINES) { buf.append("\n<blockquote"); } else { buf.append("<blockquote"); } HTMLTag.appendEscapedAttributes(buf, fAttributes); buf.append(">"); String rawWikiText = Utils.ltrimNewline(contents); AbstractParser parser = wikiModel.createNewInstance(rawWikiText); TagStack fStack = parser.parseRecursiveInternal(wikiModel, true, false); converter.nodesToText(fStack.getNodeList(), buf, wikiModel); buf.append("</blockquote>"); } @Override public Object clone() { WPBlockQuote tt = (WPBlockQuote) super.clone(); if (fAttributes == null) { tt.fAttributes = null; } else { tt.fAttributes = new HashMap<String, String>(fAttributes); } return tt; } @Override public boolean isReduceTokenStack() { return true; } @Override public String getParents() { return Configuration.SPECIAL_BLOCK_TAGS; } }