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.