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}