diff options
| -rw-r--r-- | src/blocks.c | 8 | ||||
| -rw-r--r-- | src/buffer.h | 67 | ||||
| -rw-r--r-- | src/chunk.h | 23 | ||||
| -rw-r--r-- | src/cmark.c | 1 | ||||
| -rw-r--r-- | src/cmark.h | 14 | ||||
| -rw-r--r-- | src/inlines.c | 24 | ||||
| -rw-r--r-- | src/inlines.h | 7 | ||||
| -rw-r--r-- | src/parser.h | 1 | ||||
| -rw-r--r-- | src/references.c | 31 | ||||
| -rw-r--r-- | src/references.h | 9 | 
10 files changed, 77 insertions, 108 deletions
diff --git a/src/blocks.c b/src/blocks.c index 6f995b3..09a9306 100644 --- a/src/blocks.c +++ b/src/blocks.c @@ -49,7 +49,7 @@ cmark_doc_parser *cmark_new_doc_parser()  	strbuf *line = (strbuf*)malloc(sizeof(strbuf));  	cmark_strbuf_init(line, 256); -	parser->refmap = reference_map_new(); +	parser->refmap = cmark_reference_map_new();  	parser->root = document;  	parser->current = document;  	parser->line_number = 0; @@ -184,7 +184,7 @@ static void finalize(cmark_doc_parser *parser, cmark_node* b, int line_number)  		case NODE_PARAGRAPH:  			pos = 0;  			while (strbuf_at(&b->string_content, 0) == '[' && -					(pos = parse_reference_inline(&b->string_content, parser->refmap))) { +					(pos = cmark_parse_reference_inline(&b->string_content, parser->refmap))) {  				strbuf_drop(&b->string_content, pos);  			} @@ -285,7 +285,7 @@ typedef struct BlockStack {  // Walk through cmark_node and all children, recursively, parsing  // string content into inline content where appropriate. -static void process_inlines(cmark_node* cur, reference_map *refmap) +static void process_inlines(cmark_node* cur, cmark_reference_map *refmap)  {  	block_stack* stack = NULL;  	block_stack* newstack = NULL; @@ -294,7 +294,7 @@ static void process_inlines(cmark_node* cur, reference_map *refmap)  		switch (cur->type) {  			case NODE_PARAGRAPH:  			case NODE_HEADER: -				parse_inlines(cur, refmap); +				cmark_parse_inlines(cur, refmap);  				break;  			default: diff --git a/src/buffer.h b/src/buffer.h index be888e1..7401b22 100644 --- a/src/buffer.h +++ b/src/buffer.h @@ -136,40 +136,39 @@ void cmark_strbuf_normalize_whitespace(cmark_strbuf *s);  CMARK_EXPORT  void cmark_strbuf_unescape(cmark_strbuf *s); -#ifndef CMARK_NO_SHORT_NAMES -  #define strbuf                        cmark_strbuf -  #define strbuf__initbuf               cmark_strbuf__initbuf -  #define strbuf__oom                   cmark_strbuf__oom -  #define GH_BUF_INIT                   CMARK_GH_BUF_INIT -  #define strbuf_init                   cmark_strbuf_init -  #define strbuf_try_grow               cmark_strbuf_try_grow -  #define strbuf_grow                   cmark_strbuf_grow -  #define strbuf_free                   cmark_strbuf_free -  #define strbuf_swap                   cmark_strbuf_swap -  #define strbuf_oom                    cmark_strbuf_oom -  #define strbuf_len                    cmark_strbuf_len -  #define strbuf_cmp                    cmark_strbuf_cmp -  #define strbuf_attach                 cmark_strbuf_attach -  #define strbuf_detach                 cmark_strbuf_detach -  #define strbuf_copy_cstr              cmark_strbuf_copy_cstr -  #define strbuf_at                     cmark_strbuf_at -  #define strbuf_set                    cmark_strbuf_set -  #define strbuf_sets                   cmark_strbuf_sets -  #define strbuf_putc                   cmark_strbuf_putc -  #define strbuf_put                    cmark_strbuf_put -  #define strbuf_puts                   cmark_strbuf_puts -  #define strbuf_printf                 cmark_strbuf_printf -  #define strbuf_vprintf                cmark_strbuf_vprintf -  #define strbuf_clear                  cmark_strbuf_clear -  #define strbuf_strchr                 cmark_strbuf_strchr -  #define strbuf_strrchr                cmark_strbuf_strrchr -  #define strbuf_drop                   cmark_strbuf_drop -  #define strbuf_truncate               cmark_strbuf_truncate -  #define strbuf_rtrim                  cmark_strbuf_rtrim -  #define strbuf_trim                   cmark_strbuf_trim -  #define strbuf_normalize_whitespace   cmark_strbuf_normalize_whitespace -  #define strbuf_unescape               cmark_strbuf_unescape -#endif +// Convenience macros +#define strbuf                        cmark_strbuf +#define strbuf__initbuf               cmark_strbuf__initbuf +#define strbuf__oom                   cmark_strbuf__oom +#define GH_BUF_INIT                   CMARK_GH_BUF_INIT +#define strbuf_init                   cmark_strbuf_init +#define strbuf_try_grow               cmark_strbuf_try_grow +#define strbuf_grow                   cmark_strbuf_grow +#define strbuf_free                   cmark_strbuf_free +#define strbuf_swap                   cmark_strbuf_swap +#define strbuf_oom                    cmark_strbuf_oom +#define strbuf_len                    cmark_strbuf_len +#define strbuf_cmp                    cmark_strbuf_cmp +#define strbuf_attach                 cmark_strbuf_attach +#define strbuf_detach                 cmark_strbuf_detach +#define strbuf_copy_cstr              cmark_strbuf_copy_cstr +#define strbuf_at                     cmark_strbuf_at +#define strbuf_set                    cmark_strbuf_set +#define strbuf_sets                   cmark_strbuf_sets +#define strbuf_putc                   cmark_strbuf_putc +#define strbuf_put                    cmark_strbuf_put +#define strbuf_puts                   cmark_strbuf_puts +#define strbuf_printf                 cmark_strbuf_printf +#define strbuf_vprintf                cmark_strbuf_vprintf +#define strbuf_clear                  cmark_strbuf_clear +#define strbuf_strchr                 cmark_strbuf_strchr +#define strbuf_strrchr                cmark_strbuf_strrchr +#define strbuf_drop                   cmark_strbuf_drop +#define strbuf_truncate               cmark_strbuf_truncate +#define strbuf_rtrim                  cmark_strbuf_rtrim +#define strbuf_trim                   cmark_strbuf_trim +#define strbuf_normalize_whitespace   cmark_strbuf_normalize_whitespace +#define strbuf_unescape               cmark_strbuf_unescape  #ifdef __cplusplus  } diff --git a/src/chunk.h b/src/chunk.h index 7a1dbc3..22594b1 100644 --- a/src/chunk.h +++ b/src/chunk.h @@ -107,17 +107,16 @@ static inline cmark_chunk cmark_chunk_buf_detach(cmark_strbuf *buf)  	return c;  } -#ifndef CMARK_NO_SHORT_NAMES -  #define chunk             cmark_chunk -  #define chunk_free        cmark_chunk_free -  #define chunk_ltrim       cmark_chunk_ltrim -  #define chunk_rtrim       cmark_chunk_rtrim -  #define chunk_trim        cmark_chunk_trim -  #define chunk_strchr      cmark_chunk_strchr -  #define chunk_to_cstr     cmark_chunk_to_cstr -  #define chunk_literal     cmark_chunk_literal -  #define chunk_dup         cmark_chunk_dup -  #define chunk_buf_detach  cmark_chunk_buf_detach -#endif +// Convenience macros +#define chunk             cmark_chunk +#define chunk_free        cmark_chunk_free +#define chunk_ltrim       cmark_chunk_ltrim +#define chunk_rtrim       cmark_chunk_rtrim +#define chunk_trim        cmark_chunk_trim +#define chunk_strchr      cmark_chunk_strchr +#define chunk_to_cstr     cmark_chunk_to_cstr +#define chunk_literal     cmark_chunk_literal +#define chunk_dup         cmark_chunk_dup +#define chunk_buf_detach  cmark_chunk_buf_detach  #endif diff --git a/src/cmark.c b/src/cmark.c index 273a37b..945e392 100644 --- a/src/cmark.c +++ b/src/cmark.c @@ -2,7 +2,6 @@  #include <assert.h>  #include <stdio.h>  #include "node.h" -#include "references.h"  #include "html/houdini.h"  #include "cmark.h"  #include "buffer.h" diff --git a/src/cmark.h b/src/cmark.h index 6105332..12da846 100644 --- a/src/cmark.h +++ b/src/cmark.h @@ -218,20 +218,6 @@ char *cmark_markdown_to_html(const char *text, int len);    #define ORDERED_LIST              CMARK_ORDERED_LIST    #define PERIOD_DELIM              CMARK_PERIOD_DELIM    #define PAREN_DELIM               CMARK_PAREN_DELIM -  #define free_simple               cmark_free_simple -  #define free_blocks               cmark_free_blocks -  #define doc_parser                cmark_doc_parser -  #define new_doc_parser            cmark_new_doc_parser -  #define free_doc_parser           cmark_free_doc_parser -  #define process_line              cmark_process_line -  #define finish                    cmark_finish -  #define block_next                cmark_block_next -  #define block_previous            cmark_block_previous -  #define block_parent              cmark_block_parent -  #define block_children            cmark_block_children -  #define block_delete              cmark_block_delete -  #define block_insert_before       cmark_block_insert_before -  #define block_insert_after        cmark_block_insert_after  #endif  #ifdef __cplusplus diff --git a/src/inlines.c b/src/inlines.c index 060b536..49dc781 100644 --- a/src/inlines.c +++ b/src/inlines.c @@ -37,13 +37,14 @@ typedef struct DelimiterStack {  typedef struct Subject {  	chunk input;  	int pos; -	reference_map *refmap; +	cmark_reference_map *refmap;  	delimiter_stack *delimiters;  } subject;  static int parse_inline(subject* subj, cmark_node * parent); -static void subject_from_buf(subject *e, strbuf *buffer, reference_map *refmap); +static void subject_from_buf(subject *e, strbuf *buffer, +			     cmark_reference_map *refmap);  static int subject_find_special_char(subject *subj);  static unsigned char *cmark_clean_autolink(chunk *url, int is_email) @@ -154,7 +155,8 @@ static unsigned char *bufdup(const unsigned char *buf)  	return new_buf;  } -static void subject_from_buf(subject *e, strbuf *buffer, reference_map *refmap) +static void subject_from_buf(subject *e, strbuf *buffer, +			     cmark_reference_map *refmap)  {  	e->input.data = buffer->ptr;  	e->input.len = buffer->size; @@ -514,7 +516,7 @@ static cmark_node *make_str_with_entities(chunk *content)  // Clean a URL: remove surrounding whitespace and surrounding <>,  // and remove \ that escape punctuation. -unsigned char *clean_url(chunk *url) +unsigned char *cmark_clean_url(chunk *url)  {  	strbuf buf = GH_BUF_INIT; @@ -533,7 +535,7 @@ unsigned char *clean_url(chunk *url)  	return strbuf_detach(&buf);  } -unsigned char *clean_title(chunk *title) +unsigned char *cmark_clean_title(chunk *title)  {         strbuf buf = GH_BUF_INIT;         unsigned char first, last; @@ -649,7 +651,7 @@ static cmark_node* handle_close_bracket(subject* subj, cmark_node *parent)  	int starturl, endurl, starttitle, endtitle, endall;  	int n;  	int sps; -	reference *ref; +	cmark_reference *ref;  	bool is_image = false;  	chunk urlchunk, titlechunk;  	unsigned char *url, *title; @@ -703,8 +705,8 @@ static cmark_node* handle_close_bracket(subject* subj, cmark_node *parent)  			urlchunk = chunk_dup(&subj->input, starturl, endurl - starturl);  			titlechunk = chunk_dup(&subj->input, starttitle, endtitle - starttitle); -			url = clean_url(&urlchunk); -			title = clean_title(&titlechunk); +			url = cmark_clean_url(&urlchunk); +			title = cmark_clean_title(&titlechunk);  			chunk_free(&urlchunk);  			chunk_free(&titlechunk);  			goto match; @@ -731,7 +733,7 @@ static cmark_node* handle_close_bracket(subject* subj, cmark_node *parent)  		subj->pos = initial_pos;  	} -	ref = reference_lookup(subj->refmap, &raw_label); +	ref = cmark_reference_lookup(subj->refmap, &raw_label);  	chunk_free(&raw_label);  	if (ref != NULL) { // found @@ -933,7 +935,7 @@ static void spnl(subject* subj)  // Modify refmap if a reference is encountered.  // Return 0 if no reference found, otherwise position of subject  // after reference is parsed. -int parse_reference_inline(strbuf *input, reference_map *refmap) +int cmark_parse_reference_inline(strbuf *input, cmark_reference_map *refmap)  {  	subject subj; @@ -988,6 +990,6 @@ int parse_reference_inline(strbuf *input, reference_map *refmap)  		return 0;  	}  	// insert reference into refmap -	reference_create(refmap, &lab, &url, &title); +	cmark_reference_create(refmap, &lab, &url, &title);  	return subj.pos;  } diff --git a/src/inlines.h b/src/inlines.h index 92b3b7a..d2ccfb4 100644 --- a/src/inlines.h +++ b/src/inlines.h @@ -12,13 +12,6 @@ void cmark_parse_inlines(cmark_node* parent, cmark_reference_map *refmap);  int cmark_parse_reference_inline(cmark_strbuf *input, cmark_reference_map *refmap); -#ifndef CMARK_NO_SHORT_NAMES -  #define parse_inlines             cmark_parse_inlines -  #define parse_reference_inline    cmark_parse_reference_inline -  #define clean_url                 cmark_clean_url -  #define clean_title               cmark_clean_title -#endif -  #ifdef __cplusplus  }  #endif diff --git a/src/parser.h b/src/parser.h index 4bbea09..bbbc3b1 100644 --- a/src/parser.h +++ b/src/parser.h @@ -3,7 +3,6 @@  #include <stdio.h>  #include "node.h" -#include "references.h"  #include "buffer.h"  #ifdef __cplusplus diff --git a/src/references.c b/src/references.c index 1738de1..2b1d0a7 100644 --- a/src/references.c +++ b/src/references.c @@ -16,7 +16,7 @@ refhash(const unsigned char *link_ref)  	return hash;  } -static void reference_free(reference *ref) +static void reference_free(cmark_reference *ref)  {  	if(ref != NULL) {  		free(ref->label); @@ -56,9 +56,9 @@ static unsigned char *normalize_reference(chunk *ref)  	return result;  } -static void add_reference(reference_map *map, reference* ref) +static void add_reference(cmark_reference_map *map, cmark_reference* ref)  { -	reference *t = ref->next = map->table[ref->hash % REFMAP_SIZE]; +	cmark_reference *t = ref->next = map->table[ref->hash % REFMAP_SIZE];  	while (t) {  		if (t->hash == ref->hash && @@ -73,21 +73,22 @@ static void add_reference(reference_map *map, reference* ref)  	map->table[ref->hash % REFMAP_SIZE] = ref;  } -extern void reference_create(reference_map *map, chunk *label, chunk *url, chunk *title) +void cmark_reference_create(cmark_reference_map *map, chunk *label, chunk *url, +			    chunk *title)  { -	reference *ref; +	cmark_reference *ref;  	unsigned char *reflabel = normalize_reference(label);  	/* empty reference name, or composed from only whitespace */  	if (reflabel == NULL)  		return; -	ref = (reference *)calloc(1, sizeof(*ref)); +	ref = (cmark_reference *)calloc(1, sizeof(*ref));  	if(ref != NULL) {  		ref->label = reflabel;  		ref->hash = refhash(ref->label); -		ref->url = clean_url(url); -		ref->title = clean_title(title); +		ref->url = cmark_clean_url(url); +		ref->title = cmark_clean_title(title);  		ref->next = NULL;  		add_reference(map, ref); @@ -96,9 +97,9 @@ extern void reference_create(reference_map *map, chunk *label, chunk *url, chunk  // Returns reference if refmap contains a reference with matching  // label, otherwise NULL. -reference* reference_lookup(reference_map *map, chunk *label) +cmark_reference* cmark_reference_lookup(cmark_reference_map *map, chunk *label)  { -	reference *ref = NULL; +	cmark_reference *ref = NULL;  	unsigned char *norm;  	unsigned int hash; @@ -126,7 +127,7 @@ reference* reference_lookup(reference_map *map, chunk *label)  	return ref;  } -void reference_map_free(reference_map *map) +void cmark_reference_map_free(cmark_reference_map *map)  {  	unsigned int i; @@ -134,8 +135,8 @@ void reference_map_free(reference_map *map)  		return;  	for (i = 0; i < REFMAP_SIZE; ++i) { -		reference *ref = map->table[i]; -		reference *next; +		cmark_reference *ref = map->table[i]; +		cmark_reference *next;  		while (ref) {  			next = ref->next; @@ -147,7 +148,7 @@ void reference_map_free(reference_map *map)  	free(map);  } -reference_map *reference_map_new(void) +cmark_reference_map *cmark_reference_map_new(void)  { -	return (reference_map *)calloc(1, sizeof(reference_map)); +	return (cmark_reference_map *)calloc(1, sizeof(cmark_reference_map));  } diff --git a/src/references.h b/src/references.h index 572178d..69325bb 100644 --- a/src/references.h +++ b/src/references.h @@ -30,15 +30,6 @@ void cmark_reference_map_free(cmark_reference_map *map);  cmark_reference* cmark_reference_lookup(cmark_reference_map *map, cmark_chunk *label);  extern void cmark_reference_create(cmark_reference_map *map, cmark_chunk *label, cmark_chunk *url, cmark_chunk *title); -#ifndef CMARK_NO_SHORT_NAMES -  #define reference             cmark_reference -  #define reference_map         cmark_reference_map -  #define reference_map_new     cmark_reference_map_new -  #define reference_map_free    cmark_reference_map_free -  #define reference_lookup      cmark_reference_lookup -  #define reference_create      cmark_reference_create -#endif -  #ifdef __cplusplus  }  #endif  | 
