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

  
 
  

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

NAME
     lowdown_buf -- parse a Markdown buffer into formatted output

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  speci-
     fied  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  for-
     mat.

     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 ty-
     pography.

	   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 15.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+15.1.quarterly>

home | help