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

FreeBSD Manual Pages

  
 
  

home | help
LOWDOWN_BUF(3)		    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>

       int
       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
       specified  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.

RETURN VALUES
       Returns	zero  on failure, non-zero on success.	On failure, the	values
       pointed to by res and rsz are undefined.

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 attrib-
       utes, 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 lowdown_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)

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

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

home | help