GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
LOWDOWN_DOC_PARSE(3) FreeBSD Library Functions Manual LOWDOWN_DOC_PARSE(3)

lowdown_doc_parse
parse a Markdown document into an AST

library “liblowdown”

#include <sys/queue.h>
#include <stdio.h>
#include <lowdown.h>

struct lowdown_node *
lowdown_doc_parse(struct lowdown_doc *doc, size_t *maxn, const char *input, size_t inputsz, struct lowdown_metaq *metaq);

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.

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.

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);

lowdown(3)
June 12, 2022 FreeBSD 13.1-RELEASE

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.