commonmarker 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/commonmarker/cmark/CMakeLists.txt +10 -4
- data/ext/commonmarker/cmark/Makefile +5 -5
- data/ext/commonmarker/cmark/api_test/CMakeLists.txt +1 -1
- data/ext/commonmarker/cmark/api_test/main.c +16 -0
- data/ext/commonmarker/cmark/build/CMakeCache.txt +3 -4
- data/ext/commonmarker/cmark/build/CMakeFiles/2.8.10.1/CMakeSystem.cmake +4 -4
- data/ext/commonmarker/cmark/build/CMakeFiles/CMakeError.log +12 -12
- data/ext/commonmarker/cmark/build/CMakeFiles/CMakeOutput.log +97 -142
- data/ext/commonmarker/cmark/build/CMakeFiles/Makefile.cmake +0 -1
- data/ext/commonmarker/cmark/build/api_test/CMakeFiles/api_test.dir/build.make +1 -1
- data/ext/commonmarker/cmark/build/api_test/CMakeFiles/api_test.dir/link.txt +1 -1
- data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/DependInfo.cmake +1 -1
- data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/build.make +23 -23
- data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/cmake_clean.cmake +2 -2
- data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark.dir/link.txt +1 -1
- data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/blocks.c.o +0 -0
- data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/buffer.c.o +0 -0
- data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/cmark.c.o +0 -0
- data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/commonmark.c.o +0 -0
- data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/houdini_html_u.c.o +0 -0
- data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/html.c.o +0 -0
- data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/inlines.c.o +0 -0
- data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/node.c.o +0 -0
- data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/references.c.o +0 -0
- data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/render.c.o +0 -0
- data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/scanners.c.o +0 -0
- data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/utf8.c.o +0 -0
- data/ext/commonmarker/cmark/build/src/CMakeFiles/libcmark_static.dir/xml.c.o +0 -0
- data/ext/commonmarker/cmark/build/src/cmake_install.cmake +3 -3
- data/ext/commonmarker/cmark/build/src/cmark_version.h +2 -2
- data/ext/commonmarker/cmark/build/src/config.h +6 -6
- data/ext/commonmarker/cmark/build/src/libcmark.a +0 -0
- data/ext/commonmarker/cmark/build/src/libcmark.pc +1 -1
- data/ext/commonmarker/cmark/build/testdir/CTestTestfile.cmake +4 -4
- data/ext/commonmarker/cmark/changelog.txt +46 -0
- data/ext/commonmarker/cmark/man/man3/cmark.3 +21 -20
- data/ext/commonmarker/cmark/src/CMakeLists.txt +4 -6
- data/ext/commonmarker/cmark/src/bench.h +8 -8
- data/ext/commonmarker/cmark/src/blocks.c +917 -947
- data/ext/commonmarker/cmark/src/buffer.c +213 -288
- data/ext/commonmarker/cmark/src/buffer.h +19 -21
- data/ext/commonmarker/cmark/src/chunk.h +78 -82
- data/ext/commonmarker/cmark/src/cmark.c +9 -17
- data/ext/commonmarker/cmark/src/cmark.h +113 -157
- data/ext/commonmarker/cmark/src/cmark_ctype.c +24 -35
- data/ext/commonmarker/cmark/src/commonmark.c +390 -425
- data/ext/commonmarker/cmark/src/config.h.in +6 -6
- data/ext/commonmarker/cmark/src/houdini.h +21 -15
- data/ext/commonmarker/cmark/src/houdini_href_e.c +50 -57
- data/ext/commonmarker/cmark/src/houdini_html_e.c +36 -51
- data/ext/commonmarker/cmark/src/houdini_html_u.c +119 -124
- data/ext/commonmarker/cmark/src/html.c +289 -307
- data/ext/commonmarker/cmark/src/inlines.c +976 -1030
- data/ext/commonmarker/cmark/src/inlines.h +4 -2
- data/ext/commonmarker/cmark/src/iterator.c +96 -126
- data/ext/commonmarker/cmark/src/iterator.h +5 -5
- data/ext/commonmarker/cmark/src/latex.c +379 -401
- data/ext/commonmarker/cmark/src/main.c +168 -175
- data/ext/commonmarker/cmark/src/man.c +212 -226
- data/ext/commonmarker/cmark/src/node.c +746 -839
- data/ext/commonmarker/cmark/src/node.h +47 -48
- data/ext/commonmarker/cmark/src/parser.h +14 -14
- data/ext/commonmarker/cmark/src/references.c +101 -111
- data/ext/commonmarker/cmark/src/references.h +10 -8
- data/ext/commonmarker/cmark/src/render.c +144 -167
- data/ext/commonmarker/cmark/src/render.h +22 -41
- data/ext/commonmarker/cmark/src/scanners.c +27695 -20903
- data/ext/commonmarker/cmark/src/scanners.h +2 -1
- data/ext/commonmarker/cmark/src/scanners.re +1 -1
- data/ext/commonmarker/cmark/src/utf8.c +276 -419
- data/ext/commonmarker/cmark/src/utf8.h +6 -6
- data/ext/commonmarker/cmark/src/xml.c +129 -144
- data/ext/commonmarker/cmark/test/CMakeLists.txt +4 -4
- data/ext/commonmarker/cmark/test/smart_punct.txt +8 -0
- data/ext/commonmarker/cmark/test/spec.txt +109 -47
- data/lib/commonmarker/version.rb +1 -1
- metadata +2 -2
|
@@ -8,9 +8,11 @@ extern "C" {
|
|
|
8
8
|
cmark_chunk cmark_clean_url(cmark_chunk *url);
|
|
9
9
|
cmark_chunk cmark_clean_title(cmark_chunk *title);
|
|
10
10
|
|
|
11
|
-
void cmark_parse_inlines(cmark_node*
|
|
11
|
+
void cmark_parse_inlines(cmark_node *parent, cmark_reference_map *refmap,
|
|
12
|
+
int options);
|
|
12
13
|
|
|
13
|
-
bufsize_t cmark_parse_reference_inline(cmark_strbuf *input,
|
|
14
|
+
bufsize_t cmark_parse_reference_inline(cmark_strbuf *input,
|
|
15
|
+
cmark_reference_map *refmap);
|
|
14
16
|
|
|
15
17
|
#ifdef __cplusplus
|
|
16
18
|
}
|
|
@@ -7,142 +7,112 @@
|
|
|
7
7
|
#include "iterator.h"
|
|
8
8
|
|
|
9
9
|
static const int S_leaf_mask =
|
|
10
|
-
(1 << CMARK_NODE_HTML)
|
|
11
|
-
(1 <<
|
|
12
|
-
(1 <<
|
|
13
|
-
(1 <<
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
cmark_iter*
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
iter->root = root;
|
|
30
|
-
iter->cur.ev_type = CMARK_EVENT_NONE;
|
|
31
|
-
iter->cur.node = NULL;
|
|
32
|
-
iter->next.ev_type = CMARK_EVENT_ENTER;
|
|
33
|
-
iter->next.node = root;
|
|
34
|
-
return iter;
|
|
10
|
+
(1 << CMARK_NODE_HTML) | (1 << CMARK_NODE_HRULE) |
|
|
11
|
+
(1 << CMARK_NODE_CODE_BLOCK) | (1 << CMARK_NODE_TEXT) |
|
|
12
|
+
(1 << CMARK_NODE_SOFTBREAK) | (1 << CMARK_NODE_LINEBREAK) |
|
|
13
|
+
(1 << CMARK_NODE_CODE) | (1 << CMARK_NODE_INLINE_HTML);
|
|
14
|
+
|
|
15
|
+
cmark_iter *cmark_iter_new(cmark_node *root) {
|
|
16
|
+
if (root == NULL) {
|
|
17
|
+
return NULL;
|
|
18
|
+
}
|
|
19
|
+
cmark_iter *iter = (cmark_iter *)malloc(sizeof(cmark_iter));
|
|
20
|
+
if (iter == NULL) {
|
|
21
|
+
return NULL;
|
|
22
|
+
}
|
|
23
|
+
iter->root = root;
|
|
24
|
+
iter->cur.ev_type = CMARK_EVENT_NONE;
|
|
25
|
+
iter->cur.node = NULL;
|
|
26
|
+
iter->next.ev_type = CMARK_EVENT_ENTER;
|
|
27
|
+
iter->next.node = root;
|
|
28
|
+
return iter;
|
|
35
29
|
}
|
|
36
30
|
|
|
37
|
-
void
|
|
38
|
-
cmark_iter_free(cmark_iter *iter)
|
|
39
|
-
{
|
|
40
|
-
free(iter);
|
|
41
|
-
}
|
|
31
|
+
void cmark_iter_free(cmark_iter *iter) { free(iter); }
|
|
42
32
|
|
|
43
|
-
static bool
|
|
44
|
-
|
|
45
|
-
{
|
|
46
|
-
return (1 << node->type) & S_leaf_mask;
|
|
33
|
+
static bool S_is_leaf(cmark_node *node) {
|
|
34
|
+
return ((1 << node->type) & S_leaf_mask) != 0;
|
|
47
35
|
}
|
|
48
36
|
|
|
49
|
-
cmark_event_type
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
return ev_type;
|
|
37
|
+
cmark_event_type cmark_iter_next(cmark_iter *iter) {
|
|
38
|
+
cmark_event_type ev_type = iter->next.ev_type;
|
|
39
|
+
cmark_node *node = iter->next.node;
|
|
40
|
+
|
|
41
|
+
iter->cur.ev_type = ev_type;
|
|
42
|
+
iter->cur.node = node;
|
|
43
|
+
|
|
44
|
+
if (ev_type == CMARK_EVENT_DONE) {
|
|
45
|
+
return ev_type;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/* roll forward to next item, setting both fields */
|
|
49
|
+
if (ev_type == CMARK_EVENT_ENTER && !S_is_leaf(node)) {
|
|
50
|
+
if (node->first_child == NULL) {
|
|
51
|
+
/* stay on this node but exit */
|
|
52
|
+
iter->next.ev_type = CMARK_EVENT_EXIT;
|
|
53
|
+
} else {
|
|
54
|
+
iter->next.ev_type = CMARK_EVENT_ENTER;
|
|
55
|
+
iter->next.node = node->first_child;
|
|
56
|
+
}
|
|
57
|
+
} else if (node == iter->root) {
|
|
58
|
+
/* don't move past root */
|
|
59
|
+
iter->next.ev_type = CMARK_EVENT_DONE;
|
|
60
|
+
iter->next.node = NULL;
|
|
61
|
+
} else if (node->next) {
|
|
62
|
+
iter->next.ev_type = CMARK_EVENT_ENTER;
|
|
63
|
+
iter->next.node = node->next;
|
|
64
|
+
} else if (node->parent) {
|
|
65
|
+
iter->next.ev_type = CMARK_EVENT_EXIT;
|
|
66
|
+
iter->next.node = node->parent;
|
|
67
|
+
} else {
|
|
68
|
+
assert(false);
|
|
69
|
+
iter->next.ev_type = CMARK_EVENT_DONE;
|
|
70
|
+
iter->next.node = NULL;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
return ev_type;
|
|
88
74
|
}
|
|
89
75
|
|
|
90
|
-
void
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
iter->next.node = current;
|
|
96
|
-
cmark_iter_next(iter);
|
|
76
|
+
void cmark_iter_reset(cmark_iter *iter, cmark_node *current,
|
|
77
|
+
cmark_event_type event_type) {
|
|
78
|
+
iter->next.ev_type = event_type;
|
|
79
|
+
iter->next.node = current;
|
|
80
|
+
cmark_iter_next(iter);
|
|
97
81
|
}
|
|
98
82
|
|
|
99
|
-
cmark_node*
|
|
100
|
-
cmark_iter_get_node(cmark_iter *iter)
|
|
101
|
-
{
|
|
102
|
-
return iter->cur.node;
|
|
103
|
-
}
|
|
83
|
+
cmark_node *cmark_iter_get_node(cmark_iter *iter) { return iter->cur.node; }
|
|
104
84
|
|
|
105
|
-
cmark_event_type
|
|
106
|
-
|
|
107
|
-
{
|
|
108
|
-
return iter->cur.ev_type;
|
|
85
|
+
cmark_event_type cmark_iter_get_event_type(cmark_iter *iter) {
|
|
86
|
+
return iter->cur.ev_type;
|
|
109
87
|
}
|
|
110
88
|
|
|
111
|
-
cmark_node*
|
|
112
|
-
|
|
113
|
-
{
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
{
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
}
|
|
141
|
-
cmark_chunk_free(&cur->as.literal);
|
|
142
|
-
cur->as.literal = cmark_chunk_buf_detach(&buf);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
cmark_strbuf_free(&buf);
|
|
147
|
-
cmark_iter_free(iter);
|
|
89
|
+
cmark_node *cmark_iter_get_root(cmark_iter *iter) { return iter->root; }
|
|
90
|
+
|
|
91
|
+
void cmark_consolidate_text_nodes(cmark_node *root) {
|
|
92
|
+
cmark_iter *iter = cmark_iter_new(root);
|
|
93
|
+
cmark_strbuf buf = GH_BUF_INIT;
|
|
94
|
+
cmark_event_type ev_type;
|
|
95
|
+
cmark_node *cur, *tmp, *next;
|
|
96
|
+
|
|
97
|
+
while ((ev_type = cmark_iter_next(iter)) != CMARK_EVENT_DONE) {
|
|
98
|
+
cur = cmark_iter_get_node(iter);
|
|
99
|
+
if (ev_type == CMARK_EVENT_ENTER && cur->type == CMARK_NODE_TEXT &&
|
|
100
|
+
cur->next && cur->next->type == CMARK_NODE_TEXT) {
|
|
101
|
+
cmark_strbuf_clear(&buf);
|
|
102
|
+
cmark_strbuf_put(&buf, cur->as.literal.data, cur->as.literal.len);
|
|
103
|
+
tmp = cur->next;
|
|
104
|
+
while (tmp && tmp->type == CMARK_NODE_TEXT) {
|
|
105
|
+
cmark_iter_next(iter); // advance pointer
|
|
106
|
+
cmark_strbuf_put(&buf, tmp->as.literal.data, tmp->as.literal.len);
|
|
107
|
+
next = tmp->next;
|
|
108
|
+
cmark_node_free(tmp);
|
|
109
|
+
tmp = next;
|
|
110
|
+
}
|
|
111
|
+
cmark_chunk_free(&cur->as.literal);
|
|
112
|
+
cur->as.literal = cmark_chunk_buf_detach(&buf);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
cmark_strbuf_free(&buf);
|
|
117
|
+
cmark_iter_free(iter);
|
|
148
118
|
}
|
|
@@ -8,14 +8,14 @@ extern "C" {
|
|
|
8
8
|
#include "cmark.h"
|
|
9
9
|
|
|
10
10
|
typedef struct {
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
cmark_event_type ev_type;
|
|
12
|
+
cmark_node *node;
|
|
13
13
|
} cmark_iter_state;
|
|
14
14
|
|
|
15
15
|
struct cmark_iter {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
cmark_node *root;
|
|
17
|
+
cmark_iter_state cur;
|
|
18
|
+
cmark_iter_state next;
|
|
19
19
|
};
|
|
20
20
|
|
|
21
21
|
#ifdef __cplusplus
|