NAME¶
mkd_callbacks —
functions that modify link targets
LIBRARY¶
Markdown (libmarkdown, -lmarkdown)
SYNOPSIS¶
#include
<mkdio.h>
char*
(*mkd_callback_t)(
const
char*,
const
int,
void*);
void
(*mkd_free_t)(
char
*,
void*);
void
mkd_e_url(
MMIOT
*document,
mkd_callback_t
edit);
void
mkd_e_flags(
MMIOT
*document,
mkd_callback_t
edit);
void
mkd_e_free(
MMIOT
*document,
mkd_free_t
dealloc);
void
mkd_e_data(
MMIOT
*document,
void
*data);
DESCRIPTION¶
Discount provides a small set of data access
functions to let a library user modify the targets given in a `[]' link, and
to add additional flags to the generated link.
The data access functions are passed a character pointer to the url being
generated, the size of the url, and a data pointer pointing to a user data
area (set by the
mkd_e_data() function.)
After the callback function is called (either
mkd_e_url() or
mkd_e_flags()) the data freeing function
(if supplied) is called and passed the character pointer and user data
pointer.
EXAMPLE¶
The
mkd_basename() function (in the module
basename.c) is implemented by means of mkd callbacks; it modifies urls that
start with a `/' so that they begin with a user-supplied url base by
allocating a new string and filling it with the base + the url. Discount plugs
that url in in place of the original, then calls the basename free function
(it only does this when
mkd_e_url() or
mkd_e_flags() returns nonzero) to
deallocate this memory.
Note that only one level of callbacks are supported; if you wish to do multiple
callbacks, you need to write your own code to handle them all.
SEE ALSO¶
markdown(1),
markdown(3),
mkd-line(3),
markdown(7),
mkd-extensions(7),
mmap(2).
basename.c
http://daringfireball.net/projects/markdown/syntax
BUGS¶
Error handling is minimal at best.