001package org.hl7.fhir.utilities; 002 003import com.github.rjeschke.txtmark.Processor; 004import org.commonmark.node.*; 005import org.commonmark.parser.Parser; 006import org.commonmark.renderer.html.HtmlRenderer; 007 008public class MarkDownProcessor { 009 010 public enum Dialect {DARING_FIREBALL, COMMON_MARK}; 011 012 private Dialect dialect; 013 014 015 public MarkDownProcessor(Dialect dialect) { 016 super(); 017 this.dialect = dialect; 018 } 019 020 021 public String process(String source, String context) { 022 switch (dialect) { 023 case DARING_FIREBALL : return Processor.process(source); 024 case COMMON_MARK : return processCommonMark(source); 025 default: throw new Error("Unknown Markdown Dialect: "+dialect.toString()+" at "+context); 026 } 027 } 028 029 private String processCommonMark(String source) { 030 Parser parser = Parser.builder().build(); 031 Node document = parser.parse(source); 032 HtmlRenderer renderer = HtmlRenderer.builder().build(); 033 return renderer.render(document); 034 } 035 036}