From 5ce910e4883f44be79055d0bf71f7703097f4026 Mon Sep 17 00:00:00 2001 From: "Rafael G. Martins" Date: Thu, 23 Jun 2016 00:46:06 +0200 Subject: content-parser: added basic data structures for ast --- src/content-parser.h | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'src/content-parser.h') diff --git a/src/content-parser.h b/src/content-parser.h index 37e38d7..a0e403c 100644 --- a/src/content-parser.h +++ b/src/content-parser.h @@ -12,6 +12,47 @@ #include #include +#include "utils.h" + +typedef enum { + BLOGC_CONTENT_BLOCK = 1, + BLOGC_CONTENT_INLINE, +} blogc_content_node_type_t; + +typedef enum { + BLOGC_CONTENT_BLOCK_HEADER = 1, + BLOGC_CONTENT_BLOCK_RAW, + BLOGC_CONTENT_BLOCK_BLOCKQUOTE, + BLOGC_CONTENT_BLOCK_CODE, + BLOGC_CONTENT_BLOCK_HORIZONTAL_RULE, + BLOGC_CONTENT_BLOCK_UNORDERED_LIST, + BLOGC_CONTENT_BLOCK_ORDERED_LIST, + BLOGC_CONTENT_BLOCK_LIST_ITEM, + BLOGC_CONTENT_BLOCK_PARAGRAPH, +} blogc_content_block_type_t; + +typedef enum { + BLOGC_CONTENT_INLINE_LINK = 1, + BLOGC_CONTENT_INLINE_IMAGE, + BLOGC_CONTENT_INLINE_BOLD, + BLOGC_CONTENT_INLINE_ITALIC, + BLOGC_CONTENT_INLINE_CODE, + BLOGC_CONTENT_INLINE_BREAK_LINE, +} blogc_content_inline_type_t; + +typedef struct _blogc_content_node_t { + blogc_content_node_type_t node_type; + union { + blogc_content_block_type_t block_type; + blogc_content_inline_type_t inline_type; + } type; + union { + struct _blogc_content_node_t *block; + char *content; + } child; + sb_trie_t *parameters; +} blogc_content_node_t; + char* blogc_slugify(const char *str); char* blogc_htmlentities(const char *str); char* blogc_fix_description(const char *paragraph); -- cgit v1.2.3-18-g5258