view markdown_converter/markdown_to_html.h @ 173:827c6ac504cd hg-web

Merged in default here.
author MrJuneJune <me@mrjunejune.com>
date Mon, 19 Jan 2026 18:59:10 -0800
parents 1c0878eb17de
children
line wrap: on
line source

/**
 * Markdown to HTML Converter - C Implementation
 * Supports: headers, bold, italic, links, lists, code blocks, blockquotes, horizontal rules
 */
#ifndef MARKDOWN_TO_HTML_H
#define MARKDOWN_TO_HTML_H

#include <stddef.h>

// Export macro for WASM/Emscripten
#ifdef __EMSCRIPTEN__
  #include <emscripten.h>
  #define MDAPI EMSCRIPTEN_KEEPALIVE
#else
  #ifdef _WIN32
    #ifdef MARKDOWN_EXPORTS
      #define MDAPI __declspec(dllexport)
    #else
      #define MDAPI __declspec(dllimport)
    #endif
  #else
    #define MDAPI extern
  #endif
#endif

/**
 * Convert markdown string to HTML string.
 *
 * @param markdown The input markdown string (null-terminated)
 * @return Newly allocated HTML string. Caller must free with markdown_free().
 *         Returns NULL on allocation failure.
 *
 * Supported markdown features:
 * - Headers: # H1, ## H2, ... ###### H6
 * - Bold: **text** or __text__
 * - Italic: *text* or _text_
 * - Strikethrough: ~~text~~
 * - Links: [text](url)
 * - Images: ![alt](url)
 * - Inline code: `code`
 * - Code blocks: ```code```
 * - Unordered lists: -, *, +
 * - Ordered lists: 1., 2., etc.
 * - Blockquotes: > text
 * - Horizontal rules: ---, ***, ___
 */
MDAPI char *markdown_to_html(const char *markdown);

/**
 * Free HTML string returned by markdown_to_html.
 *
 * @param html The HTML string to free
 */
MDAPI void markdown_free(char *html);

/**
 * Get length of HTML string (useful for WASM memory operations).
 *
 * @param html The HTML string
 * @return Length of the string, or 0 if NULL
 */
MDAPI size_t markdown_get_length(const char *html);

#endif // MARKDOWN_TO_HTML_H