MARKDOWN(3) Library Functions Manual MARKDOWN(3)
NAME
markdown — process Markdown documents
LIBRARY
Markdown (libmarkdown, -lmarkdown)
SYNOPSIS
#include <mkdio.h>
MMIOT
*mkd_in(FILE *input, mkd_flag_t *flags);
MMIOT
*mkd_string(char *string, int size, mkd_flag_t *flags);
int
markdown(MMIOT *doc, FILE *output, mkd_flag_t *flags);
DESCRIPTION
These functions convert Markdown documents and strings into HTML. markdown() processes an entire document, while mkd_text() processes a single string.
To process a file, you pass a FILE* to mkd_in(), and if it returns a nonzero value you pass that in to markdown(), which then writes the converted document to the specified FILE*. If your input has already been written into a string (generated input or a file opened with mmap(2)) you can feed that string to mkd_string() and pass its return value to markdown.()
Markdown() holds the flag values in an opaque flag blob that you need to initialize and populate before using:
mkd_flag_t* mkd_flag_t()
creates a mkd_flag_t structure and returns a pointer to it.
mkd_free_flags(mkd_flag_t *)
deletes a mkd_flag_t structure when you are finished with it.
mkd_flag_t* mkd_copy_flags(mkd_flag_t*)
Makes a copy of a flag blob and returns a pointer to it.
mkd_flag_isset(mkd_flag_t *, int)
tells you if a specific flag is set
mkd_set_flag_num(mkd_flag_t *, int)
Sets a specified flag
mkd_clr_flag_num(mkd_flag_t *, int)
Clears a specified flag
The following flags are currently accepted:
MKD_NOLINKS
don’t do link processing, block <a> tags
MKD_NOIMAGE
don’t do image processing, block <img>
MKD_NOPANTS
don’t run smartypants()
MKD_NOHTML
don’t allow raw html through AT ALL
MKD_NORMAL_LISTITEM
disable github-style checkbox lists
MKD_TAGTEXT
process text inside an html tag
MKD_NO_EXT
don’t allow pseudo-protocols
MKD_EXPLICITLIST
don’t combine numbered/bulletted lists
MKD_CDATA
generate code for xml ![CDATA[...]]
MKD_NOSUPERSCRIPT
no AˆB
MKD_STRICT
conform to Markdown standard as implemented in Markdown.pl
MKD_NOTABLES
disallow tables
MKD_NOSTRIKETHROUGH
forbid ˜˜strikethrough˜˜
MKD_1_COMPAT
compatibility with MarkdownTest_1.0
MKD_TOC
do table-of-contents processing
MKD_AUTOLINK
make http://foo.com link even without <>s
MKD_NOHEADER
don’t process header blocks
MKD_TABSTOP
expand tabs to 4 spaces
MKD_SAFELINK
paranoid check for link protocol
MKD_NODIVQUOTE
forbid >%class% blocks
MKD_NOALPHALIST
forbid alphabetic lists
MKD_EXTRA_FOOTNOTE
enable markdown extra-style footnotes
MKD_NOSTYLE
don’t extract <style> blocks
MKD_DLDISCOUNT
enable discount-style definition lists
MKD_DLEXTRA
enable extra-style definition lists
MKD_FENCEDCODE
enabled fenced code blocks
MKD_IDANCHOR
use id= anchors for TOC links
MKD_GITHUBTAGS
allow dash and underscore in element names
MKD_URLENCODEDANCHOR
urlencode non-identifier chars instead of replacing with dots
MKD_LATEX
handle embedded LaTeX escapes
MKD_ALT_AS_TITLE
use alt text as the title if no title is listed
MKD_EXTENDED_ATTR
allow extended attribute suffixes
RETURN VALUES
markdown() returns 0 on success, 1 on failure. The mkd_in() and mkd_string() functions return a MMIOT* on success, null on failure.
SEE ALSO
markdown(1), mkd-callbacks(3), mkd-functions(3), mkd-line(3), markdown(7), mkd-extensions(7), mmap(2).
http://daringfireball.net/projects/markdown/syntax
BUGS
Error handling is minimal at best.
The MMIOT created by mkd_string() is deleted by the markdown function. Mastodon December 20, 2007 MARKDOWN(3)