85 lines
2.0 KiB
C
85 lines
2.0 KiB
C
|
/* html.h - HTML renderer and utilities */
|
||
|
|
||
|
#ifndef HOEDOWN_HTML_H
|
||
|
#define HOEDOWN_HTML_H
|
||
|
|
||
|
#include "document.h"
|
||
|
#include "buffer.h"
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
|
||
|
/*************
|
||
|
* CONSTANTS *
|
||
|
*************/
|
||
|
|
||
|
typedef enum hoedown_html_flags {
|
||
|
HOEDOWN_HTML_SKIP_HTML = (1 << 0),
|
||
|
HOEDOWN_HTML_ESCAPE = (1 << 1),
|
||
|
HOEDOWN_HTML_HARD_WRAP = (1 << 2),
|
||
|
HOEDOWN_HTML_USE_XHTML = (1 << 3)
|
||
|
} hoedown_html_flags;
|
||
|
|
||
|
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;
|
||
|
|
||
|
struct {
|
||
|
int header_count;
|
||
|
int current_level;
|
||
|
int level_offset;
|
||
|
int nesting_level;
|
||
|
} toc_data;
|
||
|
|
||
|
hoedown_html_flags flags;
|
||
|
|
||
|
/* extra callbacks */
|
||
|
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;
|
||
|
|
||
|
|
||
|
/*************
|
||
|
* 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));
|
||
|
|
||
|
/* 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));
|
||
|
|
||
|
/* hoedown_html_renderer_free: deallocate an HTML renderer */
|
||
|
void hoedown_html_renderer_free(hoedown_renderer *renderer);
|
||
|
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif /** HOEDOWN_HTML_H **/
|