|
NAME
LIBRARYlibrary “liblowdown” SYNOPSIS
int
DESCRIPTIONParses 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
The caller is responsible for freeing ret and metaq. RETURN VALUESReturns zero on failure, non-zero on success. On failure, the values pointed to by res and rsz are undefined. EXAMPLESThe 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);
|