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

FreeBSD Manual Pages

  
 
  

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

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

BSD			       January 28, 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_buf&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help