mkd_functions
—
access and process Markdown documents.
Markdown (libmarkdown, -lmarkdown)
#include <mkdio.h>
int
mkd_compile
(MMIOT
*document, int
flags);
int
mkd_css
(MMIOT
*document, char
**doc);
int
mkd_generatecss
(MMIOT
*document, FILE
*output);
int
mkd_document
(MMIOT
*document, char
**doc);
int
mkd_generatehtml
(MMIOT
*document, FILE
*output);
int
mkd_xhtmlpage
(MMIOT
*document, int
flags, FILE
*output);
int
mkd_toc
(MMIOT
*document, char
**doc);
void
mkd_generatetoc
(MMIOT
*document, FILE
*output);
void
mkd_cleanup
(MMIOT*);
char*
mkd_doc_title
(MMIOT*);
char*
mkd_doc_author
(MMIOT*);
char*
mkd_doc_date
(MMIOT*);
The markdown
format supported in this implementation
includes Pandoc-style header and inline <style>
blocks, and the standard
markdown(3)
functions do not provide access to the data provided by either of those
extensions. These functions give you access to that data, plus they provide a
finer-grained way of converting Markdown documents into
HTML.
Given a MMIOT* generated by
mkd_in
() or mkd_string
(),
mkd_compile
() compiles the document into
<style>, Pandoc, and
html sections.
Once compiled, the document can be examined and written by the
mkd_css
(), mkd_document
(),
mkd_generatecss
(),
mkd_generatehtml
(),
mkd_generatetoc
(),
mkd_toc
(), mkd_xhtmlpage
(),
mkd_doc_title
(),
mkd_doc_author
(), and
mkd_doc_date
() functions.
mkd_css
() allocates a string and populates
it with any <style> sections provided in the document,
mkd_generatecss
() writes any <style> sections
to the output, mkd_document
() points
text to the text of the document and returns the size
of the document, mkd_generatehtml
() writes the rest
of the document to the output, and mkd_doc_title
(),
mkd_doc_author
(),
mkd_doc_date
() are used to read the contents of a
Pandoc header, if any.
mkd_xhtmlpage
() writes a xhtml page
containing the document. The regular set of flags can be passed.
mkd_toc
() writes a document outline, in
the form of a collection of nested lists with links to each header in the
document, into a string allocated with malloc
(), and
returns the size.
mkd_generatetoc
() is like
mkd_toc
(), except that it writes the document
outline to the given FILE* argument.
mkd_cleanup
() deletes a
MMIOT* after processing is done.
mkd_compile
() accepts the same flags that
markdown
() and mkd_string
()
do;
- MKD_NOIMAGE
- Do not process `![]' and remove <img> tags from
the output.
- MKD_NOLINKS
- Do not process `[]' and remove <a> tags from the
output.
- MKD_NOPANTS
- Do not do Smartypants-style mangling of quotes, dashes, or ellipses.
- MKD_TAGTEXT
- Process the input as if you were inside a html tag. This means that no
html tags will be generated, and
mkd_compile
()
will attempt to escape anything that might terribly confuse a web
browser.
- MKD_NO_EXT
- Do not process any markdown pseudo-protocols when handing
[][] links.
- MKD_NOHEADER
- Do not attempt to parse any Pandoc-style headers.
- MKD_TOC
- Label all headers for use with the
mkd_generatetoc
() function.
- MKD_1_COMPAT
- MarkdownTest_1.0 compatibility flag; trim trailing spaces from the first
line of code blocks and disable implicit reference links.
- MKD_NOSTRIKETHROUGH
- Disable strikethrough support.
The function mkd_compile
() returns 1 in the case of
success, or 0 if the document is already compiled. The function
mkd_generatecss
() returns the number of bytes written
in the case of success, or EOF if an error occurred. The function
mkd_generatehtml
() returns 0 on success, -1 on
failure.
Error handling is minimal at best.