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

FreeBSD Manual Pages

  
 
  

home | help
LOWDOWN_BUF(3)	       FreeBSD Library Functions Manual		LOWDOWN_BUF(3)

NAME
     lowdown_buf -- parse a Markdown buffer into formatted output

LIBRARY
     library "liblowdown"

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

     void
     lowdown_buf(const struct lowdown_opts *opts, const	char *buf,
	 size_t	bufsz, char **ret, size_t *retsz,
	 struct	lowdown_metaq *metaq);

DESCRIPTION
     Parses a lowdown(5) buffer	buf of size bufsz into an output buffer	ret of
     size retsz	according to a configuration opts.  The	output format is spec-
     ified by opts-_type.  If LOWDOWN_METADATA is set in opts-_feat and	metaq
     is	not NULL, metaq	is filled with metadata	rendered in the	given output
     format.

     The caller	is responsible for freeing ret and metaq.

EXAMPLES
     The following parses standard input into a	standalone HTML5 document.  It
     enables footnotes,	autolinks, tables, superscript,	strikethrough, fenced
     codeblocks, commonmark, definition	lists, extended	image attributes, and
     metadata processing.  The output passes through raw HTML and has smart
     typography.

	   struct lowdown_opts opts;
	   char	*buf = NULL, *obuf;
	   char	rbuf[1024];
	   size_t sz, bufsz = 0, obufsz;

	   while (!(feof(stdin)	|| ferror(stdin))) {
	     sz	= fread(rbuf, 1, sizeof(rbuf), stdin);
	     if	(sz == 0)
	       err(1, "fread");
	     buf = realloc(buf,	bufsz +	sz);
	     if	(buf ==	NULL)
	       err(1, NULL);
	     memcpy(buf	+ bufsz, rbuf, sz);
	     bufsz += sz;
	   }

	   if (ferror(stdin))
	     err(1, "fread");

	   memset(&opts, 0, sizeof(struct opts));
	   opts.type = LOWDOWN_HTML;
	   opts.feat = LOWDOWN_FOOTNOTES |
	     LOWDOWN_AUTOLINK |
	     LOWDOWN_TABLES |
	     LOWDOWN_SUPER |
	     LOWDOWN_STRIKE |
	     LOWDOWN_FENCED |
	     LOWDOWN_COMMONMARK	|
	     LOWDOWN_DEFLIST |
	     LOWDOWN_IMG_EXT |
	     LOWDOWN_METADATA;
	   opts.oflags = LOWDOWN_HTML_HEAD_IDS |
	     LOWDOWN_HTML_NUM_ENT |
	     LOWDOWN_HTML_OWASP	|
	     LOWDOWN_SMARTY |
	     LOWDOWN_STANDALONE;
	   if (!lowdown_buf(&opts, buf,	bufsz, &obuf, &obufsz, NULL))
	     errx(1, "lowdown_buf");
	   fwrite(buf, 1, bufsz, stdout);
	   free(buf);
	   free(obuf);

SEE ALSO
     lowdown(3), lowdown_metaq_free(3)

CAVEATS
     This function will	call exit(3) if	internal memory	allocation fails.
     There is no way to	catch this condition.

FreeBSD	13.0			August 29, 2020			  FreeBSD 13.0

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | EXAMPLES | SEE ALSO | CAVEATS

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

home | help