Skip to content

Instantly share code, notes, and snippets.

@subchen
Last active January 11, 2016 11:20
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save subchen/7352297 to your computer and use it in GitHub Desktop.
Save subchen/7352297 to your computer and use it in GitHub Desktop.
Add syntaxhighlighter.js for Pegdown
import org.pegdown.*;
import org.pegdown.ast.RootNode;
import org.pegdown.ast.VerbatimNode;
public class PegdownUtils {
public static String asHtml(String source) {
PegDownProcessor p = new PegDownProcessor(Extensions.ALL - Extensions.SMARTYPANTS);
RootNode root = p.parseMarkdown(source.toCharArray());
return new HighlightHtmlSerializer().toHtml(root);
}
static class HighlightHtmlSerializer extends ToHtmlSerializer {
static final LinkRenderer INSTANCE = new LinkRenderer();
public HighlightHtmlSerializer() {
super(INSTANCE);
}
@Override
public void visit(VerbatimNode node) {
printer.println();
printer.print("<script type=\"syntaxhighlighter\" class=\"brush: ");
String lang = node.getType();
printer.print((lang == null || lang.length() == 0) ? "text" : lang);
printer.print("\"><![CDATA[\n").print(node.getText()).print("]]></script>");
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment