summaryrefslogtreecommitdiff
path: root/src/cmark.h
diff options
context:
space:
mode:
authorJohn MacFarlane <fiddlosopher@gmail.com>2014-11-13 09:29:51 -0800
committerJohn MacFarlane <fiddlosopher@gmail.com>2014-11-13 09:29:51 -0800
commit91642ceee7a2a2c05d9561c0e22b2f15111ac603 (patch)
tree8c9832ff1ef76900ade55cc459c21a19a8c0e832 /src/cmark.h
parent4467216e9fbf9eaa94ac4178b2400dc481c57ba0 (diff)
Added ast.[c,h] for AST definitions and AST-manipulating functions.
Diffstat (limited to 'src/cmark.h')
-rw-r--r--src/cmark.h124
1 files changed, 1 insertions, 123 deletions
diff --git a/src/cmark.h b/src/cmark.h
index 8b29934..07cee14 100644
--- a/src/cmark.h
+++ b/src/cmark.h
@@ -4,8 +4,7 @@
#include <stdbool.h>
#include <stdio.h>
#include "buffer.h"
-#include "chunk.h"
-#include "references.h"
+#include "ast.h"
#ifdef __cplusplus
extern "C" {
@@ -16,105 +15,9 @@ extern "C" {
#define CMARK_MAX_LINK_LABEL_LENGTH 1000
-struct cmark_node_inl {
- enum {
- CMARK_INL_STRING,
- CMARK_INL_SOFTBREAK,
- CMARK_INL_LINEBREAK,
- CMARK_INL_CODE,
- CMARK_INL_RAW_HTML,
- CMARK_INL_EMPH,
- CMARK_INL_STRONG,
- CMARK_INL_LINK,
- CMARK_INL_IMAGE
- } tag;
- union {
- cmark_chunk literal;
- struct cmark_node_inl *inlines;
- struct {
- struct cmark_node_inl *label;
- unsigned char *url;
- unsigned char *title;
- } linkable;
- } content;
- struct cmark_node_inl *next;
-};
-
-typedef struct cmark_node_inl cmark_node_inl;
-
-// Types for blocks
-struct cmark_ListData {
- enum {
- bullet,
- ordered
- } list_type;
- int marker_offset;
- int padding;
- int start;
- enum {
- period,
- parens
- } delimiter;
- unsigned char bullet_char;
- bool tight;
-};
-
-struct cmark_FencedCodeData {
- int fence_length;
- int fence_offset;
- unsigned char fence_char;
- cmark_strbuf info;
-};
-
-struct cmark_node_block {
- enum {
- CMARK_BLOCK_DOCUMENT,
- CMARK_BLOCK_BQUOTE,
- CMARK_BLOCK_LIST,
- CMARK_BLOCK_LIST_ITEM,
- CMARK_BLOCK_FENCED_CODE,
- CMARK_BLOCK_INDENTED_CODE,
- CMARK_BLOCK_HTML,
- CMARK_BLOCK_PARAGRAPH,
- CMARK_BLOCK_ATX_HEADER,
- CMARK_BLOCK_SETEXT_HEADER,
- CMARK_BLOCK_HRULE,
- CMARK_BLOCK_REFERENCE_DEF
- } tag;
- int start_line;
- int start_column;
- int end_line;
- bool open;
- bool last_line_blank;
- struct cmark_node_block* children;
- struct cmark_node_block* last_child;
- struct cmark_node_block* parent;
- struct cmark_node_block* top;
- cmark_strbuf string_content;
- cmark_node_inl* inline_content;
-
- union {
- struct cmark_ListData list;
- struct cmark_FencedCodeData code;
- struct {
- int level;
- } header;
- struct {
- cmark_reference_map *refmap;
- } document;
- } as;
-
- struct cmark_node_block *next;
- struct cmark_node_block *prev;
-};
-
-typedef struct cmark_node_block cmark_node_block;
-
cmark_node_block *cmark_parse_document(const unsigned char *buffer, size_t len);
cmark_node_block *cmark_parse_file(FILE *f);
-void cmark_free_nodes(cmark_node_block *e);
-
void cmark_debug_print(cmark_node_block *root);
void cmark_render_html(cmark_strbuf *html, cmark_node_block *root);
@@ -124,31 +27,6 @@ unsigned char *cmark_markdown_to_html(unsigned char *text, int len);
#define VERSION CMARK_VERSION
#define CODE_INDENT CMARK_CODE_INDENT
#define MAX_LINK_LABEL_LENGTH CMARK_MAX_LINK_LABEL_LENGTH
- #define node_inl cmark_node_inl
- #define INL_STRING CMARK_INL_STRING
- #define INL_SOFTBREAK CMARK_INL_SOFTBREAK
- #define INL_LINEBREAK CMARK_INL_LINEBREAK
- #define INL_CODE CMARK_INL_CODE
- #define INL_RAW_HTML CMARK_INL_RAW_HTML
- #define INL_EMPH CMARK_INL_EMPH
- #define INL_STRONG CMARK_INL_STRONG
- #define INL_LINK CMARK_INL_LINK
- #define INL_IMAGE CMARK_INL_IMAGE
- #define ListData cmark_ListData
- #define FencedCodeData cmark_FencedCodeData
- #define node_block cmark_node_block
- #define BLOCK_DOCUMENT CMARK_BLOCK_DOCUMENT
- #define BLOCK_BQUOTE CMARK_BLOCK_BQUOTE
- #define BLOCK_LIST CMARK_BLOCK_LIST
- #define BLOCK_LIST_ITEM CMARK_BLOCK_LIST_ITEM
- #define BLOCK_FENCED_CODE CMARK_BLOCK_FENCED_CODE
- #define BLOCK_INDENTED_CODE CMARK_BLOCK_INDENTED_CODE
- #define BLOCK_HTML CMARK_BLOCK_HTML
- #define BLOCK_PARAGRAPH CMARK_BLOCK_PARAGRAPH
- #define BLOCK_ATX_HEADER CMARK_BLOCK_ATX_HEADER
- #define BLOCK_SETEXT_HEADER CMARK_BLOCK_SETEXT_HEADER
- #define BLOCK_HRULE CMARK_BLOCK_HRULE
- #define BLOCK_REFERENCE_DEF CMARK_BLOCK_REFERENCE_DEF
#endif
#ifdef __cplusplus