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. */