lowdown_doc_parse — parse a Markdown document into an AST
Contents
Description
Parse a lowdown(5) document input of length inputsz into an AST with the parser doc. The maxn argument,
if not NULL, is set to one greater than the highest node identifier. Its value is undefined if the
function returns NULL.
If metaq is not NULL, it is filled in with document metadata (if any). Metadata key names are
canonicalised and duplicate names are ignored. The results should be freed with lowdown_metaq_free(3).
This function may be invoked multiple times with a single doc and different input.
Examples
The following parses b of length bsz. It first allocates the parser, then the document, then the
renderer (HTML is used in this case). Then it passes output to the renderer, prints it, and cleans up
resources. On any memory errors, it exits with err(3).
struct lowdown_doc *doc;
struct lowdown_node *n;
struct lowdown_buf *ob;
void *rndr;
if ((doc = lowdown_doc_new(NULL)) == NULL)
err(1, NULL);
if ((n = lowdown_doc_parse(doc, NULL, b, bsz, NULL)) == NULL)
err(1, NULL);
if ((rndr = lowdown_html_new(NULL)) == NULL)
err(1, NULL);
if ((ob = lowdown_buf_new(1024)) == NULL)
err(1, NULL);
if (!lowdown_html_rndr(ob, rndr, n))
err(1, NULL);
fwrite(stdout, 1, ob->size, ob->data);
lowdown_buf_free(ob);
lowdown_html_rndr_free(rndr);
lowdown_node_free(n);
lowdown_doc_free(doc);
Library
library “liblowdown”
Name
lowdown_doc_parse — parse a Markdown document into an AST
Return Values
Returns the root of the parse tree or NULL on memory allocation failure. If not NULL, the returned node
is always of type LOWDOWN_ROOT.
See Also
lowdown(3) Debian $Mdocdate$ LOWDOWN_DOC_PARSE(3)
Synopsis
#include<sys/queue.h>#include<stdio.h>#include<lowdown.h>structlowdown_node*lowdown_doc_parse(structlowdown_doc*doc, size_t*maxn, constchar*input, size_tinputsz,
structlowdown_metaq*metaq);
