MKD_CALLBACKS(3) Library Functions Manual MKD_CALLBACKS(3)

mkd_callbacksfunctions that modify link targets

Markdown (libmarkdown, -lmarkdown)

#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_code(MMIOT *document, mkd_callback_t edit);

void
mkd_e_data(MMIOT *document, void *data);

Discount provides a small set of data access functions to let a library user modify the generated html.

()

modifies the target given in a `[]` link;
()

adds additional flags to a `[]` link;
()
lets you manipulate the contents of a code block.

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 () function.) After the callback function is called the data freeing function (if supplied) is called and passed the character pointer and user data pointer.

The () 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 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.

markdown(1), markdown(3), mkd-line(3), markdown(7), mkd-extensions(7), mmap(2).

basename.c

http://daringfireball.net/projects/markdown/syntax

Error handling is minimal at best.

January 18, 2008 Mastodon