cmark

My personal build of CMark ✏️

Commit
10e90b78c99ccc13233ef8bba98b7fbf3fe14750
Parent
4a3320a75c7eaf2f3f5451ab0bc0ef4e3f2e1554
Author
John MacFarlane <jgm@berkeley.edu>
Date

Don't expose append_inlines.

Diffstat

3 files changed, 36 insertions, 58 deletions

Status File Name N° Changes Insertions Deletions
Modified src/cmark.c 68 19 49
Modified src/cmark.h 11 2 9
Modified src/inlines.c 15 15 0
diff --git a/src/cmark.c b/src/cmark.c
@@ -24,29 +24,6 @@ unsigned char *cmark_markdown_to_html(unsigned char *text, int len)
 	return result;
 }
 
-// Free a node_block list and any children.
-void cmark_free_blocks(cmark_node_block *e)
-{
-	cmark_node_block * next;
-	while (e != NULL) {
-		cmark_free_inlines(e->inline_content);
-		strbuf_free(&e->string_content);
-		if (e->tag == CMARK_BLOCK_FENCED_CODE) {
-			strbuf_free(&e->as.code.info);
-		} else if (e->tag == CMARK_BLOCK_DOCUMENT) {
-			reference_map_free(e->as.document.refmap);
-		}
-		if (e->last_child) {
-			// Splice children into list
-			e->last_child->next = e->next;
-			e->next = e->children;
-		}
-		next = e->next;
-		free(e);
-		e = next;
-	}
-}
-
 // Utility function used by free_inlines
 static void splice_into_list(cmark_node_inl* e, node_inl* children) {
 	cmark_node_inl * tmp;
@@ -168,33 +145,26 @@ inline cmark_node_inl* cmark_make_simple(int t)
 	return e;
 }
 
-// Append inline list b to the end of inline list a.
-// Return pointer to head of new list.
-inline cmark_node_inl* cmark_append_inlines(cmark_node_inl* a, cmark_node_inl* b)
+// Free a node_block list and any children.
+void cmark_free_blocks(cmark_node_block *e)
 {
-	if (a == NULL) {  // NULL acts like an empty list
-		return b;
-	}
-	cmark_node_inl* cur = a;
-	while (cur->next != NULL) {
-		cur = cur->next;
+	cmark_node_block * next;
+	while (e != NULL) {
+		cmark_free_inlines(e->inline_content);
+		strbuf_free(&e->string_content);
+		if (e->tag == CMARK_BLOCK_FENCED_CODE) {
+			strbuf_free(&e->as.code.info);
+		} else if (e->tag == CMARK_BLOCK_DOCUMENT) {
+			reference_map_free(e->as.document.refmap);
+		}
+		if (e->last_child) {
+			// Splice children into list
+			e->last_child->next = e->next;
+			e->next = e->children;
+		}
+		next = e->next;
+		free(e);
+		e = next;
 	}
-	cur->next = b;
-	return a;
 }
 
-// Append block list b to the end of block list a.
-// Return pointer to head of new list.
-inline cmark_node_block* cmark_append_blocks(cmark_node_block* a, cmark_node_block* b)
-{
-	if (a == NULL) {  // NULL acts like an empty list
-		return b;
-	}
-	cmark_node_block* cur = a;
-	while (cur->next != NULL) {
-		cur = cur->next;
-	}
-	cur->next = b;
-        b->prev = cur;
-	return a;
-}
diff --git a/src/cmark.h b/src/cmark.h
@@ -127,12 +127,6 @@ CMARK_EXPORT
 void cmark_free_inlines(cmark_node_inl* e);
 
 CMARK_EXPORT
-cmark_node_inl* cmark_append_inlines(cmark_node_inl* a, cmark_node_inl* b);
-
-CMARK_EXPORT
-cmark_node_block* cmark_append_blocks(cmark_node_block* a, cmark_node_block* b);
-
-CMARK_EXPORT
 cmark_node_inl *cmark_make_link(cmark_node_inl *label, unsigned char *url, unsigned char *title);
 
 CMARK_EXPORT
@@ -217,7 +211,6 @@ unsigned char *cmark_markdown_to_html(unsigned char *text, int len);
   #define BLOCK_REFERENCE_DEF       CMARK_BLOCK_REFERENCE_DEF
   #define free_simple               cmark_free_simple
   #define free_blocks               cmark_free_blocks
-  #define append_simple             cmark_append_simple
   #define make_link                 cmark_make_link
   #define make_autolink             cmark_make_autolink
   #define make_str                  cmark_make_str
@@ -228,8 +221,8 @@ unsigned char *cmark_markdown_to_html(unsigned char *text, int len);
   #define make_emph                 cmark_make_emph
   #define make_strong               cmark_make_strong
   #define make_simple               cmark_make_simple
-  #define make_simple               cmark_make_simple
-  #define make_simple               cmark_make_simple
+  #define make_literal              cmark_make_literal
+  #define make_inlines              cmark_make_inlines
   #define doc_parser                cmark_doc_parser
   #define new_doc_parser            cmark_new_doc_parser
   #define free_doc_parser           cmark_free_doc_parser
diff --git a/src/inlines.c b/src/inlines.c
@@ -101,6 +101,21 @@ static inline chunk take_while(subject* subj, int (*f)(int))
 	return chunk_dup(&subj->input, startpos, len);
 }
 
+// Append inline list b to the end of inline list a.
+// Return pointer to head of new list.
+static inline cmark_node_inl* cmark_append_inlines(cmark_node_inl* a, cmark_node_inl* b)
+{
+	if (a == NULL) {  // NULL acts like an empty list
+		return b;
+	}
+	cmark_node_inl* cur = a;
+	while (cur->next != NULL) {
+		cur = cur->next;
+	}
+	cur->next = b;
+	return a;
+}
+
 // Try to process a backtick code span that began with a
 // span of ticks of length openticklength length (already
 // parsed).  Return 0 if you don't find matching closing