package jp.aonir.fuzzyxml.internal; import jp.aonir.fuzzyxml.FuzzyXMLComment; import jp.aonir.fuzzyxml.FuzzyXMLFormat; import jp.aonir.fuzzyxml.FuzzyXMLNode; public class FuzzyXMLCommentImpl extends FuzzyXMLElementImpl implements FuzzyXMLComment, FuzzyXMLFormat { private final String _value; private final boolean _hasCloseTag; public FuzzyXMLCommentImpl(String value) { this(null, value, 0, 0); } public FuzzyXMLCommentImpl(FuzzyXMLNode parent, String value, int offset, int length) { super(parent, "comment", offset, length, -1); _hasCloseTag = value.trim().endsWith("-->"); String text = value.replaceFirst("<!--", "").replaceFirst("-->", ""); _value = text; } @Override public String getValue() { return _value; } @Override public void toXMLString(RenderContext renderContext, StringBuffer xmlBuffer) { boolean renderSurroundingTags = true; RenderDelegate delegate = renderContext.getDelegate(); if (delegate != null) { renderSurroundingTags = delegate.beforeOpenTag(this, renderContext, xmlBuffer); } if (renderSurroundingTags) { xmlBuffer.append("<!--"); String commentString = getValue();//FuzzyXMLUtil.decode(getValue(), renderContext.isHtml()); if (renderContext.shouldFormat()) { // commentString = commentString.replaceFirst(" *$", ""); } if (commentString != null) { if (!commentString.startsWith(" ")) { xmlBuffer.append(" "); } xmlBuffer.append(commentString); } if (_hasCloseTag) { if (xmlBuffer.charAt(xmlBuffer.length() - 1) == '\n') { renderContext.appendIndent(xmlBuffer); } else if (!commentString.endsWith(" ")) { xmlBuffer.append(" "); } xmlBuffer.append("-->"); } if (delegate != null) { delegate.afterCloseTag(this, renderContext, xmlBuffer); } } } @Override public String toString() { return "comment: " + getValue(); } }