summaryrefslogtreecommitdiff
path: root/src/html.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/html.h')
-rw-r--r--src/html.h59
1 files changed, 39 insertions, 20 deletions
diff --git a/src/html.h b/src/html.h
index 46b424b..e46e7fd 100644
--- a/src/html.h
+++ b/src/html.h
@@ -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
}