diff options
Diffstat (limited to 'src/html.h')
-rw-r--r-- | src/html.h | 59 |
1 files changed, 39 insertions, 20 deletions
@@ -1,30 +1,38 @@ -/* html.h - HTML renderer */ +/* html.h - HTML renderer and utilities */ #ifndef HOEDOWN_HTML_H #define HOEDOWN_HTML_H #include "document.h" #include "buffer.h" -#include <stdlib.h> #ifdef __cplusplus extern "C" { #endif -typedef enum { + +/************* + * CONSTANTS * + *************/ + +typedef enum hoedown_html_flags { HOEDOWN_HTML_SKIP_HTML = (1 << 0), HOEDOWN_HTML_ESCAPE = (1 << 1), - HOEDOWN_HTML_SAFELINK = (1 << 2), - HOEDOWN_HTML_HARD_WRAP = (1 << 3), - HOEDOWN_HTML_USE_XHTML = (1 << 4) + HOEDOWN_HTML_HARD_WRAP = (1 << 2), + HOEDOWN_HTML_USE_XHTML = (1 << 3) } hoedown_html_flags; -typedef enum { +typedef enum hoedown_html_tag { HOEDOWN_HTML_TAG_NONE = 0, HOEDOWN_HTML_TAG_OPEN, HOEDOWN_HTML_TAG_CLOSE } hoedown_html_tag; + +/********* + * TYPES * + *********/ + struct hoedown_html_renderer_state { void *opaque; @@ -35,28 +43,39 @@ struct hoedown_html_renderer_state { int nesting_level; } toc_data; - unsigned int flags; + hoedown_html_flags flags; /* extra callbacks */ - void (*link_attributes)(hoedown_buffer *ob, const hoedown_buffer *url, void *self); + void (*link_attributes)(hoedown_buffer *ob, const hoedown_buffer *url, const hoedown_renderer_data *data); }; - typedef struct hoedown_html_renderer_state hoedown_html_renderer_state; -int -hoedown_html_is_tag(const uint8_t *tag_data, size_t tag_size, const char *tagname); -extern hoedown_renderer * -hoedown_html_renderer_new(unsigned int render_flags, int nesting_level); +/************* + * FUNCTIONS * + *************/ + +/* hoedown_html_smartypants: process an HTML snippet using SmartyPants for smart punctuation */ +void hoedown_html_smartypants(hoedown_buffer *ob, const uint8_t *data, size_t size); + +/* hoedown_html_is_tag: checks if data starts with a specific tag, returns the tag type or NONE */ +hoedown_html_tag hoedown_html_is_tag(const uint8_t *data, size_t size, const char *tagname); + + +/* hoedown_html_renderer_new: allocates a regular HTML renderer */ +hoedown_renderer *hoedown_html_renderer_new( + hoedown_html_flags render_flags, + int nesting_level +) __attribute__ ((malloc)); -extern hoedown_renderer * -hoedown_html_toc_renderer_new(int nesting_level); +/* hoedown_html_toc_renderer_new: like hoedown_html_renderer_new, but the returned renderer produces the Table of Contents */ +hoedown_renderer *hoedown_html_toc_renderer_new( + int nesting_level +) __attribute__ ((malloc)); -extern void -hoedown_html_renderer_free(hoedown_renderer *renderer); +/* hoedown_html_renderer_free: deallocate an HTML renderer */ +void hoedown_html_renderer_free(hoedown_renderer *renderer); -extern void -hoedown_html_smartypants(hoedown_buffer *ob, const uint8_t *text, size_t size); #ifdef __cplusplus } |