Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
LOWDOWN_DOC_PARSE(3)	    Library Functions Manual	  LOWDOWN_DOC_PARSE(3)

NAME
       lowdown_doc_parse -- parse a Markdown document into an AST

LIBRARY
       library "liblowdown"

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

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	 func-
       tion 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 dif-
       ferent input.

RETURN VALUES
       Returns the root	of the parse tree or NULL on memory  allocation	 fail-
       ure.  If	not NULL, the returned node is always of type LOWDOWN_ROOT.

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

SEE ALSO
       lowdown(3)

FreeBSD	Ports 14.quarterly	  $Mdocdate$		  LOWDOWN_DOC_PARSE(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=lowdown_doc_parse&sektion=3&manpath=FreeBSD+Ports+14.3.quarterly>

home | help