Skip to content

Commit be62b2b

Browse files
committed
Apply upstream PR github/cmark-gfm#362
Fixes r-lib#23
1 parent eb01599 commit be62b2b

File tree

6 files changed

+77
-1
lines changed

6 files changed

+77
-1
lines changed

DESCRIPTION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Package: commonmark
22
Type: Package
33
Title: High Performance CommonMark and Github Markdown Rendering in R
4-
Version: 1.9.2
4+
Version: 1.9.3
55
Authors@R: c(
66
person("Jeroen", "Ooms", ,"[email protected]", role = c("aut", "cre"),
77
comment = c(ORCID = "0000-0002-4035-0289")),

NEWS

+3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
1.9.3
2+
- Apply upstream PR https://github.com/github/cmark-gfm/pull/362
3+
14
1.9.1
25
- Update libcmark-gfm to 0.29.0.gfm.13
36

src/cmark/node.c

+4
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,10 @@ const char *cmark_node_get_type_string(cmark_node *node) {
288288
return "link";
289289
case CMARK_NODE_IMAGE:
290290
return "image";
291+
case CMARK_NODE_FOOTNOTE_REFERENCE:
292+
return "fnref";
293+
case CMARK_NODE_FOOTNOTE_DEFINITION:
294+
return "fn";
291295
}
292296

293297
return "<unknown>";

src/cmark/xml.c

+19
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,25 @@ static int S_render_node(cmark_node *node, cmark_event_type ev_type,
134134
escape_xml(xml, node->as.link.title.data, node->as.link.title.len);
135135
cmark_strbuf_putc(xml, '"');
136136
break;
137+
case CMARK_NODE_FOOTNOTE_DEFINITION:
138+
cmark_strbuf_puts(xml, " id=\"fn-");
139+
escape_xml(xml, node->as.literal.data, node->as.literal.len);
140+
cmark_strbuf_putc(xml, '"');
141+
break;
142+
case CMARK_NODE_FOOTNOTE_REFERENCE:
143+
cmark_strbuf_puts(xml, " id=\"fnref-");
144+
escape_xml(xml, node->parent_footnote_def->as.literal.data, node->parent_footnote_def->as.literal.len);
145+
if (node->footnote.ref_ix > 1) {
146+
char n[32];
147+
snprintf(n, sizeof(n), "%d", node->footnote.ref_ix);
148+
cmark_strbuf_puts(xml, "-");
149+
cmark_strbuf_puts(xml, n);
150+
}
151+
cmark_strbuf_putc(xml, '"');
152+
cmark_strbuf_puts(xml, " destination=\"fn-");
153+
escape_xml(xml, node->parent_footnote_def->as.literal.data, node->parent_footnote_def->as.literal.len);
154+
cmark_strbuf_putc(xml, '"');
155+
break;
137156
default:
138157
break;
139158
}

src/patches/362.diff

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
diff --git a/src/node.c b/src/node.c
2+
index e7a9606d5..c7e62d25b 100644
3+
--- a/src/node.c
4+
+++ b/src/node.c
5+
@@ -288,6 +288,10 @@ const char *cmark_node_get_type_string(cmark_node *node) {
6+
return "link";
7+
case CMARK_NODE_IMAGE:
8+
return "image";
9+
+ case CMARK_NODE_FOOTNOTE_REFERENCE:
10+
+ return "fnref";
11+
+ case CMARK_NODE_FOOTNOTE_DEFINITION:
12+
+ return "fn";
13+
}
14+
15+
return "<unknown>";
16+
diff --git a/src/xml.c b/src/xml.c
17+
index 5753e5ab9..c9a79cfd6 100644
18+
--- a/src/xml.c
19+
+++ b/src/xml.c
20+
@@ -134,6 +134,25 @@ static int S_render_node(cmark_node *node, cmark_event_type ev_type,
21+
escape_xml(xml, node->as.link.title.data, node->as.link.title.len);
22+
cmark_strbuf_putc(xml, '"');
23+
break;
24+
+ case CMARK_NODE_FOOTNOTE_DEFINITION:
25+
+ cmark_strbuf_puts(xml, " id=\"fn-");
26+
+ escape_xml(xml, node->as.literal.data, node->as.literal.len);
27+
+ cmark_strbuf_putc(xml, '"');
28+
+ break;
29+
+ case CMARK_NODE_FOOTNOTE_REFERENCE:
30+
+ cmark_strbuf_puts(xml, " id=\"fnref-");
31+
+ escape_xml(xml, node->parent_footnote_def->as.literal.data, node->parent_footnote_def->as.literal.len);
32+
+ if (node->footnote.ref_ix > 1) {
33+
+ char n[32];
34+
+ snprintf(n, sizeof(n), "%d", node->footnote.ref_ix);
35+
+ cmark_strbuf_puts(xml, "-");
36+
+ cmark_strbuf_puts(xml, n);
37+
+ }
38+
+ cmark_strbuf_putc(xml, '"');
39+
+ cmark_strbuf_puts(xml, " destination=\"fn-");
40+
+ escape_xml(xml, node->parent_footnote_def->as.literal.data, node->parent_footnote_def->as.literal.len);
41+
+ cmark_strbuf_putc(xml, '"');
42+
+ break;
43+
default:
44+
break;
45+
}

src/patches/apply.sh

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/bin/sh
2+
3+
# Upstream PR: https://github.com/github/cmark-gfm/pull/362
4+
patch -p2 -d ../cmark < 362.diff
5+

0 commit comments

Comments
 (0)