Allow to provide custom CSS to MarkdownFormatter

Change-Id: Ic4bc0d8768e159a80c3e388bc33c4544fe581fc2
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
This commit is contained in:
Edwin Kempin
2014-10-13 13:48:34 +02:00
parent 3862ba2897
commit 47f4870ed2

View File

@@ -20,6 +20,7 @@ import static org.pegdown.Extensions.SUPPRESS_ALL_HTML;
import com.google.common.base.Strings;
import org.apache.commons.lang.StringEscapeUtils;
import org.eclipse.jgit.util.RawParseUtils;
import org.eclipse.jgit.util.TemporaryBuffer;
import org.pegdown.LinkRenderer;
@@ -44,7 +45,7 @@ public class MarkdownFormatter {
private static final Logger log =
LoggerFactory.getLogger(MarkdownFormatter.class);
private static final String css;
private static final String defaultCss;
static {
AtomicBoolean file = new AtomicBoolean();
@@ -55,12 +56,12 @@ public class MarkdownFormatter {
log.warn("Cannot load pegdown.css", err);
src = "";
}
css = file.get() ? null : src;
defaultCss = file.get() ? null : src;
}
private static String readCSS() {
if (css != null) {
return css;
if (defaultCss != null) {
return defaultCss;
}
try {
return readPegdownCss(new AtomicBoolean());
@@ -71,12 +72,18 @@ public class MarkdownFormatter {
}
private boolean suppressHtml;
private String css;
public MarkdownFormatter suppressHtml() {
suppressHtml = true;
return this;
}
public MarkdownFormatter setCss(String css) {
this.css = StringEscapeUtils.escapeHtml(css);
return this;
}
public byte[] markdownToDocHtml(String md, String charEnc)
throws UnsupportedEncodingException {
RootNode root = parseMarkdown(md);
@@ -88,9 +95,13 @@ public class MarkdownFormatter {
if (!Strings.isNullOrEmpty(title)) {
html.append("<title>").append(title).append("</title>");
}
html.append("<style type=\"text/css\">\n")
.append(readCSS())
.append("\n</style>");
html.append("<style type=\"text/css\">\n");
if (css != null) {
html.append(css);
} else {
html.append(readCSS());
}
html.append("\n</style>");
html.append("</head>");
html.append("<body>\n");
html.append(new ToHtmlSerializer(new LinkRenderer()).toHtml(root));