LOWDOWN_BUF(3) | Library Functions Manual | LOWDOWN_BUF(3) |
lowdown_buf
—
parse a Markdown buffer into formatted output
library “liblowdown”
#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);
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.
Returns zero on failure, non-zero on success. On failure, the values pointed to by res and rsz are undefined.
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);
June 19, 2024 | Debian |