summaryrefslogtreecommitdiff
path: root/src/document.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/document.h')
-rw-r--r--src/document.h154
1 files changed, 80 insertions, 74 deletions
diff --git a/src/document.h b/src/document.h
index 4547972..a8178fe 100644
--- a/src/document.h
+++ b/src/document.h
@@ -10,11 +10,12 @@
extern "C" {
#endif
-/*********
- * FLAGS *
- *********/
-enum hoedown_extensions {
+/*************
+ * CONSTANTS *
+ *************/
+
+typedef enum hoedown_extensions {
/* block-level extensions */
HOEDOWN_EXT_TABLES = (1 << 0),
HOEDOWN_EXT_FENCED_CODE = (1 << 1),
@@ -27,17 +28,16 @@ enum hoedown_extensions {
HOEDOWN_EXT_HIGHLIGHT = (1 << 6),
HOEDOWN_EXT_QUOTE = (1 << 7),
HOEDOWN_EXT_SUPERSCRIPT = (1 << 8),
- HOEDOWN_EXT_MATH = (1 << 13),
+ HOEDOWN_EXT_MATH = (1 << 9),
/* other flags */
- HOEDOWN_EXT_LAX_SPACING = (1 << 9),
- HOEDOWN_EXT_NO_INTRA_EMPHASIS = (1 << 10),
- HOEDOWN_EXT_SPACE_HEADERS = (1 << 11),
- HOEDOWN_EXT_MATH_EXPLICIT = (1 << 14),
+ HOEDOWN_EXT_NO_INTRA_EMPHASIS = (1 << 11),
+ HOEDOWN_EXT_SPACE_HEADERS = (1 << 12),
+ HOEDOWN_EXT_MATH_EXPLICIT = (1 << 13),
/* negative flags */
- HOEDOWN_EXT_DISABLE_INDENTED_CODE = (1 << 12)
-};
+ HOEDOWN_EXT_DISABLE_INDENTED_CODE = (1 << 14)
+} hoedown_extensions;
#define HOEDOWN_EXT_BLOCK (\
HOEDOWN_EXT_TABLES |\
@@ -54,7 +54,6 @@ enum hoedown_extensions {
HOEDOWN_EXT_MATH )
#define HOEDOWN_EXT_FLAGS (\
- HOEDOWN_EXT_LAX_SPACING |\
HOEDOWN_EXT_NO_INTRA_EMPHASIS |\
HOEDOWN_EXT_SPACE_HEADERS |\
HOEDOWN_EXT_MATH_EXPLICIT )
@@ -62,30 +61,37 @@ enum hoedown_extensions {
#define HOEDOWN_EXT_NEGATIVE (\
HOEDOWN_EXT_DISABLE_INDENTED_CODE )
-/* list/listitem flags */
-enum hoedown_listflags {
+typedef enum hoedown_list_flags {
HOEDOWN_LIST_ORDERED = (1 << 0),
HOEDOWN_LI_BLOCK = (1 << 1) /* <li> containing block data */
-};
+} hoedown_list_flags;
-enum hoedown_tableflags {
+typedef enum hoedown_table_flags {
HOEDOWN_TABLE_ALIGN_LEFT = 1,
HOEDOWN_TABLE_ALIGN_RIGHT = 2,
HOEDOWN_TABLE_ALIGN_CENTER = 3,
HOEDOWN_TABLE_ALIGNMASK = 3,
HOEDOWN_TABLE_HEADER = 4
-};
+} hoedown_table_flags;
-/* hoedown_autolink - type of autolink */
-enum hoedown_autolink {
+typedef enum hoedown_autolink_type {
HOEDOWN_AUTOLINK_NONE, /* used internally when it is not an autolink*/
HOEDOWN_AUTOLINK_NORMAL, /* normal http/http/ftp/mailto/etc link */
HOEDOWN_AUTOLINK_EMAIL /* e-mail link without explit mailto: */
-};
+} hoedown_autolink_type;
-/********************
- * TYPE DEFINITIONS *
- ********************/
+
+/*********
+ * TYPES *
+ *********/
+
+struct hoedown_document;
+typedef struct hoedown_document hoedown_document;
+
+struct hoedown_renderer_data {
+ void *opaque;
+};
+typedef struct hoedown_renderer_data hoedown_renderer_data;
/* hoedown_renderer - functions for rendering parsed data */
struct hoedown_renderer {
@@ -93,71 +99,71 @@ struct hoedown_renderer {
void *opaque;
/* block level callbacks - NULL skips the block */
- void (*blockcode)(hoedown_buffer *ob, const hoedown_buffer *text, const hoedown_buffer *lang, void *opaque);
- void (*blockquote)(hoedown_buffer *ob, const hoedown_buffer *text, void *opaque);
- void (*blockhtml)(hoedown_buffer *ob,const hoedown_buffer *text, void *opaque);
- void (*header)(hoedown_buffer *ob, const hoedown_buffer *text, int level, void *opaque);
- void (*hrule)(hoedown_buffer *ob, void *opaque);
- void (*list)(hoedown_buffer *ob, const hoedown_buffer *text, unsigned int flags, void *opaque);
- void (*listitem)(hoedown_buffer *ob, const hoedown_buffer *text, unsigned int flags, void *opaque);
- void (*paragraph)(hoedown_buffer *ob, const hoedown_buffer *text, void *opaque);
- void (*table)(hoedown_buffer *ob, const hoedown_buffer *header, const hoedown_buffer *body, void *opaque);
- void (*table_row)(hoedown_buffer *ob, const hoedown_buffer *text, void *opaque);
- void (*table_cell)(hoedown_buffer *ob, const hoedown_buffer *text, unsigned int flags, void *opaque);
- void (*footnotes)(hoedown_buffer *ob, const hoedown_buffer *text, void *opaque);
- void (*footnote_def)(hoedown_buffer *ob, const hoedown_buffer *text, unsigned int num, void *opaque);
+ void (*blockcode)(hoedown_buffer *ob, const hoedown_buffer *text, const hoedown_buffer *lang, const hoedown_renderer_data *data);
+ void (*blockquote)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);
+ void (*header)(hoedown_buffer *ob, const hoedown_buffer *content, int level, const hoedown_renderer_data *data);
+ void (*hrule)(hoedown_buffer *ob, const hoedown_renderer_data *data);
+ void (*list)(hoedown_buffer *ob, const hoedown_buffer *content, hoedown_list_flags flags, const hoedown_renderer_data *data);
+ void (*listitem)(hoedown_buffer *ob, const hoedown_buffer *content, hoedown_list_flags flags, const hoedown_renderer_data *data);
+ void (*paragraph)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);
+ void (*table)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);
+ void (*table_header)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);
+ void (*table_body)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);
+ void (*table_row)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);
+ void (*table_cell)(hoedown_buffer *ob, const hoedown_buffer *content, hoedown_table_flags flags, const hoedown_renderer_data *data);
+ void (*footnotes)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);
+ void (*footnote_def)(hoedown_buffer *ob, const hoedown_buffer *content, unsigned int num, const hoedown_renderer_data *data);
+ void (*blockhtml)(hoedown_buffer *ob, const hoedown_buffer *text, const hoedown_renderer_data *data);
/* span level callbacks - NULL or return 0 prints the span verbatim */
- int (*autolink)(hoedown_buffer *ob, const hoedown_buffer *link, enum hoedown_autolink type, void *opaque);
- int (*codespan)(hoedown_buffer *ob, const hoedown_buffer *text, void *opaque);
- int (*double_emphasis)(hoedown_buffer *ob, const hoedown_buffer *text, void *opaque);
- int (*emphasis)(hoedown_buffer *ob, const hoedown_buffer *text, void *opaque);
- int (*underline)(hoedown_buffer *ob, const hoedown_buffer *text, void *opaque);
- int (*highlight)(hoedown_buffer *ob, const hoedown_buffer *text, void *opaque);
- int (*quote)(hoedown_buffer *ob, const hoedown_buffer *text, void *opaque);
- int (*image)(hoedown_buffer *ob, const hoedown_buffer *link, const hoedown_buffer *title, const hoedown_buffer *alt, void *opaque);
- int (*linebreak)(hoedown_buffer *ob, void *opaque);
- int (*link)(hoedown_buffer *ob, const hoedown_buffer *link, const hoedown_buffer *title, const hoedown_buffer *content, void *opaque);
- int (*raw_html_tag)(hoedown_buffer *ob, const hoedown_buffer *tag, void *opaque);
- int (*triple_emphasis)(hoedown_buffer *ob, const hoedown_buffer *text, void *opaque);
- int (*strikethrough)(hoedown_buffer *ob, const hoedown_buffer *text, void *opaque);
- int (*superscript)(hoedown_buffer *ob, const hoedown_buffer *text, void *opaque);
- int (*footnote_ref)(hoedown_buffer *ob, unsigned int num, void *opaque);
- int (*math)(hoedown_buffer *ob, const hoedown_buffer *text, int displaymode, void *opaque);
+ int (*autolink)(hoedown_buffer *ob, const hoedown_buffer *link, hoedown_autolink_type type, const hoedown_renderer_data *data);
+ int (*codespan)(hoedown_buffer *ob, const hoedown_buffer *text, const hoedown_renderer_data *data);
+ int (*double_emphasis)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);
+ int (*emphasis)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);
+ int (*underline)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);
+ int (*highlight)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);
+ int (*quote)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);
+ int (*image)(hoedown_buffer *ob, const hoedown_buffer *link, const hoedown_buffer *title, const hoedown_buffer *alt, const hoedown_renderer_data *data);
+ int (*linebreak)(hoedown_buffer *ob, const hoedown_renderer_data *data);
+ int (*link)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_buffer *link, const hoedown_buffer *title, const hoedown_renderer_data *data);
+ int (*triple_emphasis)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);
+ int (*strikethrough)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);
+ int (*superscript)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);
+ int (*footnote_ref)(hoedown_buffer *ob, unsigned int num, const hoedown_renderer_data *data);
+ int (*math)(hoedown_buffer *ob, const hoedown_buffer *text, int displaymode, const hoedown_renderer_data *data);
+ int (*raw_html)(hoedown_buffer *ob, const hoedown_buffer *text, const hoedown_renderer_data *data);
/* low level callbacks - NULL copies input directly into the output */
- void (*entity)(hoedown_buffer *ob, const hoedown_buffer *entity, void *opaque);
- void (*normal_text)(hoedown_buffer *ob, const hoedown_buffer *text, void *opaque);
+ void (*entity)(hoedown_buffer *ob, const hoedown_buffer *text, const hoedown_renderer_data *data);
+ void (*normal_text)(hoedown_buffer *ob, const hoedown_buffer *text, const hoedown_renderer_data *data);
- /* header and footer */
- void (*doc_header)(hoedown_buffer *ob, void *opaque);
- void (*doc_footer)(hoedown_buffer *ob, void *opaque);
+ /* miscellaneous callbacks */
+ void (*doc_header)(hoedown_buffer *ob, int inline_render, const hoedown_renderer_data *data);
+ void (*doc_footer)(hoedown_buffer *ob, int inline_render, const hoedown_renderer_data *data);
};
-
typedef struct hoedown_renderer hoedown_renderer;
-struct hoedown_document;
-typedef struct hoedown_document hoedown_document;
+/*************
+ * FUNCTIONS *
+ *************/
-/**********************
- * EXPORTED FUNCTIONS *
- **********************/
-
-extern hoedown_document *
-hoedown_document_new(
+/* hoedown_document_new: allocate a new document processor instance */
+hoedown_document *hoedown_document_new(
const hoedown_renderer *renderer,
- unsigned int extensions,
- size_t max_nesting);
+ hoedown_extensions extensions,
+ size_t max_nesting
+) __attribute__ ((malloc));
+
+/* hoedown_document_render: render regular Markdown using the document processor */
+void hoedown_document_render(hoedown_document *doc, hoedown_buffer *ob, const uint8_t *data, size_t size);
-extern void
-hoedown_document_render(hoedown_document *doc, hoedown_buffer *ob, const uint8_t *document, size_t doc_size);
+/* hoedown_document_render_inline: render inline Markdown using the document processor */
+void hoedown_document_render_inline(hoedown_document *doc, hoedown_buffer *ob, const uint8_t *data, size_t size);
-extern void
-hoedown_document_render_inline(hoedown_document *doc, hoedown_buffer *ob, const uint8_t *document, size_t doc_size);
+/* hoedown_document_free: deallocate a document processor instance */
+void hoedown_document_free(hoedown_document *doc);
-extern void
-hoedown_document_free(hoedown_document *doc);
#ifdef __cplusplus
}