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

FreeBSD Manual Pages

  
 
  

home | help
LOWDOWN_DOC_PARSE(3)	 BSD 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 function re-
     turns 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 differ-
     ent input.

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.

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)

BSD			       January 20, 2022				   BSD

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUES | EXAMPLES | SEE ALSO

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

home | help