MKD_CALLBACKS(3)

✨ NAME ✨

This is MKD_CALLBACKS(3), straight from the Library Functions Manual, and it’s all about mkd_callbacks β€” functions that modify link targets. Yes bestie, we’re customizing links and code blocks. πŸ’…

πŸ“š LIBRARY πŸ“š

Markdown (libmarkdown, -lmarkdown) β€” iconic library, no cap. πŸŽ€

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

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 generated html. It’s giving backstage-pass energy. 🎟️✨

Here’s the callback lineup:

  • mkd_e_url() β€” modifies the target given in a [] link.
  • mkd_e_flags() β€” adds additional flags to a [] link.
  • mkd_e_code() β€” 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 mkd_e_data() function.) After the callback function is called 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 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 πŸ¦‹

πŸ’€ BUGS πŸ’€

Straight up: Error handling is minimal at best. That’s it, that’s the bug section. 😭


Signed, sealed, delivered: this page came from Mastodon, dated January 18, 2008, and it’s the MKD_CALLBACKS(3) manual page. Stay slaying those callbacks, bestie. πŸ’–βœ¨