1:- module(md_parse, [
    2    md_parse_codes/2,      3    md_parse_stream/2,     4    md_parse_file/2,       5    md_parse_string/2,     6    md_html_codes/2,       7    md_html_stream/2,      8    md_html_file/2,        9    md_html_string/2      10]).
   18:- use_module(library(http/html_write)).   19:- use_module(library(readutil)).   20
   21:- use_module(md_links).   22:- use_module(md_blocks).
   29md_parse_string(String, Blocks):-
   30    string_codes(String, Codes),
   31    md_parse_codes(Codes, Blocks).
   38md_parse_codes(Codes, Blocks):-
   39    md_links(Codes, Tmp),
   40    phrase(md_blocks(Out), Tmp), !,
   41    Blocks = Out.
   47md_parse_stream(Stream, Blocks):-
   48    read_stream_to_codes(Stream, Codes),
   49    md_parse_codes(Codes, Blocks).
   55md_parse_file(File, Blocks):-
   56    read_file_to_codes(File, Codes, []),
   57    md_parse_codes(Codes, Blocks).
   63md_html_codes(Codes, Html):-
   64    md_parse_codes(Codes, Blocks),
   65    phrase(html(Blocks), Tokens),
   66    with_output_to(string(Html), print_html(Tokens)).
   73md_html_string(String, Html):-
   74    string_codes(String, Codes),
   75    md_html_codes(Codes, Html).
   81md_html_stream(Stream, Html):-
   82    read_stream_to_codes(Stream, Codes),
   83    md_html_codes(Codes, Html).
   89md_html_file(File, Html):-
   90    read_file_to_codes(File, Codes, []),
   91    md_html_codes(Codes, Html)
 
Prolog Markdown parser
Top-level module for parsing Markdown. Contains some convenience predicated. */