qiita_marker 0.23.2.1 → 0.23.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -0
- data/ext/qiita_marker/autolink.c +57 -10
- data/ext/qiita_marker/html.c +1 -1
- data/ext/qiita_marker/qfm.h +3 -0
- data/ext/qiita_marker/qfm_custom_block.c +1 -14
- data/ext/qiita_marker/qfm_mention_no_emphasis.c +1 -1
- data/lib/qiita_marker/config.rb +4 -2
- data/lib/qiita_marker/renderer/html_renderer.rb +1 -1
- data/lib/qiita_marker/version.rb +1 -1
- data/test/test_qfm_autolink_class_name.rb +62 -0
- data/test/test_qfm_code_data_metadata.rb +24 -9
- data/test/test_qfm_custom_block.rb +18 -2
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 15d5d73e2386cf310ae997adc33bfca334a51c241a0345b8d5fddc2af9a988bf
|
4
|
+
data.tar.gz: c45e0c3f30cfd5dfad5d8beb4dc0f3ee08fc6bb405e2dfb188623393180fa104
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 88d95a7228008d65a57f13d571370c3fe9a3701319e2e6a801a16659c032646d592345e155a23a8ac4f70b8d87a347b152a72b8447399c73285f2b475e3426d5
|
7
|
+
data.tar.gz: b3a3a996bfac4705044451fee3ecd7cd29909de05b3a1c9b52f64e9cc9cf14497820b8a74f67f49225c7ab777d87a83e9a0da104fa15219df03a3efb1c054a66
|
data/README.md
CHANGED
@@ -20,6 +20,7 @@ In addition to CommonMarker's options and extensions, the following are availabl
|
|
20
20
|
| Name | Description |
|
21
21
|
| --- | --- |
|
22
22
|
| `:MENTION_NO_EMPHASIS` | Prevent parsing mentions as emphasis. |
|
23
|
+
| `:AUTOLINK_CLASS_NAME` | Append `class="autolink"` to extension's autolinks. |
|
23
24
|
|
24
25
|
#### Render options
|
25
26
|
|
@@ -27,6 +28,7 @@ In addition to CommonMarker's options and extensions, the following are availabl
|
|
27
28
|
| --- | --- |
|
28
29
|
| `:CODE_DATA_METADATA` | Use `<code data-metadata>` for fenced code blocks. |
|
29
30
|
| `:MENTION_NO_EMPHASIS` | Prevent parsing mentions as emphasis. |
|
31
|
+
| `:AUTOLINK_CLASS_NAME` | Append `class="autolink"` to extension's autolinks. |
|
30
32
|
|
31
33
|
### Original extensions
|
32
34
|
|
data/ext/qiita_marker/autolink.c
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
#include "autolink.h"
|
2
|
+
#include "houdini.h"
|
3
|
+
#include "qfm.h"
|
4
|
+
#include "scanners.h"
|
2
5
|
#include <parser.h>
|
6
|
+
#include <render.h>
|
3
7
|
#include <string.h>
|
4
8
|
#include <utf8.h>
|
5
9
|
|
@@ -9,6 +13,11 @@
|
|
9
13
|
#include <strings.h>
|
10
14
|
#endif
|
11
15
|
|
16
|
+
static void escape_html(cmark_strbuf *dest, const unsigned char *source,
|
17
|
+
bufsize_t length) {
|
18
|
+
houdini_escape_html0(dest, source, length, 0);
|
19
|
+
}
|
20
|
+
|
12
21
|
static int is_valid_hostchar(const uint8_t *link, size_t link_len) {
|
13
22
|
int32_t ch;
|
14
23
|
int r = cmark_utf8proc_iterate(link, (bufsize_t)link_len, &ch);
|
@@ -144,7 +153,8 @@ static size_t check_domain(uint8_t *data, size_t size, int allow_short) {
|
|
144
153
|
}
|
145
154
|
|
146
155
|
static cmark_node *www_match(cmark_parser *parser, cmark_node *parent,
|
147
|
-
cmark_inline_parser *inline_parser
|
156
|
+
cmark_inline_parser *inline_parser,
|
157
|
+
cmark_syntax_extension *ext) {
|
148
158
|
cmark_chunk *chunk = cmark_inline_parser_get_chunk(inline_parser);
|
149
159
|
size_t max_rewind = cmark_inline_parser_get_offset(inline_parser);
|
150
160
|
uint8_t *data = chunk->data + max_rewind;
|
@@ -176,6 +186,9 @@ static cmark_node *www_match(cmark_parser *parser, cmark_node *parent,
|
|
176
186
|
cmark_inline_parser_set_offset(inline_parser, (int)(max_rewind + link_end));
|
177
187
|
|
178
188
|
cmark_node *node = cmark_node_new_with_mem(CMARK_NODE_LINK, parser->mem);
|
189
|
+
if (parser->options & CMARK_OPT_AUTOLINK_CLASS_NAME) {
|
190
|
+
cmark_node_set_syntax_extension(node, ext);
|
191
|
+
}
|
179
192
|
|
180
193
|
cmark_strbuf buf;
|
181
194
|
cmark_strbuf_init(parser->mem, &buf, 10);
|
@@ -199,7 +212,8 @@ static cmark_node *www_match(cmark_parser *parser, cmark_node *parent,
|
|
199
212
|
}
|
200
213
|
|
201
214
|
static cmark_node *url_match(cmark_parser *parser, cmark_node *parent,
|
202
|
-
cmark_inline_parser *inline_parser
|
215
|
+
cmark_inline_parser *inline_parser,
|
216
|
+
cmark_syntax_extension *ext) {
|
203
217
|
size_t link_end, domain_len;
|
204
218
|
int rewind = 0;
|
205
219
|
|
@@ -237,6 +251,9 @@ static cmark_node *url_match(cmark_parser *parser, cmark_node *parent,
|
|
237
251
|
cmark_node_unput(parent, rewind);
|
238
252
|
|
239
253
|
cmark_node *node = cmark_node_new_with_mem(CMARK_NODE_LINK, parser->mem);
|
254
|
+
if (parser->options & CMARK_OPT_AUTOLINK_CLASS_NAME) {
|
255
|
+
cmark_node_set_syntax_extension(node, ext);
|
256
|
+
}
|
240
257
|
|
241
258
|
cmark_chunk url = cmark_chunk_dup(chunk, max_rewind - rewind,
|
242
259
|
(bufsize_t)(link_end + rewind));
|
@@ -257,10 +274,10 @@ static cmark_node *match(cmark_syntax_extension *ext, cmark_parser *parser,
|
|
257
274
|
return NULL;
|
258
275
|
|
259
276
|
if (c == ':')
|
260
|
-
return url_match(parser, parent, inline_parser);
|
277
|
+
return url_match(parser, parent, inline_parser, ext);
|
261
278
|
|
262
279
|
if (c == 'w')
|
263
|
-
return www_match(parser, parent, inline_parser);
|
280
|
+
return www_match(parser, parent, inline_parser, ext);
|
264
281
|
|
265
282
|
return NULL;
|
266
283
|
|
@@ -269,7 +286,8 @@ static cmark_node *match(cmark_syntax_extension *ext, cmark_parser *parser,
|
|
269
286
|
// inline was finished in inlines.c.
|
270
287
|
}
|
271
288
|
|
272
|
-
static void postprocess_text(cmark_parser *parser, cmark_node *text, int offset,
|
289
|
+
static void postprocess_text(cmark_parser *parser, cmark_node *text, int offset,
|
290
|
+
int depth, cmark_syntax_extension *ext) {
|
273
291
|
// postprocess_text can recurse very deeply if there is a very long line of
|
274
292
|
// '@' only. Stop at a reasonable depth to ensure it cannot crash.
|
275
293
|
if (depth > 1000) return;
|
@@ -311,7 +329,7 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text, int offset,
|
|
311
329
|
}
|
312
330
|
|
313
331
|
if (rewind == 0 || ns > 0) {
|
314
|
-
postprocess_text(parser, text, max_rewind + 1 + offset, depth + 1);
|
332
|
+
postprocess_text(parser, text, max_rewind + 1 + offset, depth + 1, ext);
|
315
333
|
return;
|
316
334
|
}
|
317
335
|
|
@@ -331,20 +349,23 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text, int offset,
|
|
331
349
|
|
332
350
|
if (link_end < 2 || nb != 1 || np == 0 ||
|
333
351
|
(!cmark_isalpha(data[link_end - 1]) && data[link_end - 1] != '.')) {
|
334
|
-
postprocess_text(parser, text, max_rewind + 1 + offset, depth + 1);
|
352
|
+
postprocess_text(parser, text, max_rewind + 1 + offset, depth + 1, ext);
|
335
353
|
return;
|
336
354
|
}
|
337
355
|
|
338
356
|
link_end = autolink_delim(data, link_end);
|
339
357
|
|
340
358
|
if (link_end == 0) {
|
341
|
-
postprocess_text(parser, text, max_rewind + 1 + offset, depth + 1);
|
359
|
+
postprocess_text(parser, text, max_rewind + 1 + offset, depth + 1, ext);
|
342
360
|
return;
|
343
361
|
}
|
344
362
|
|
345
363
|
cmark_chunk_to_cstr(parser->mem, &text->as.literal);
|
346
364
|
|
347
365
|
cmark_node *link_node = cmark_node_new_with_mem(CMARK_NODE_LINK, parser->mem);
|
366
|
+
if (parser->options & CMARK_OPT_AUTOLINK_CLASS_NAME) {
|
367
|
+
cmark_node_set_syntax_extension(link_node, ext);
|
368
|
+
}
|
348
369
|
cmark_strbuf buf;
|
349
370
|
cmark_strbuf_init(parser->mem, &buf, 10);
|
350
371
|
cmark_strbuf_puts(&buf, "mailto:");
|
@@ -373,7 +394,7 @@ static void postprocess_text(cmark_parser *parser, cmark_node *text, int offset,
|
|
373
394
|
text->as.literal.len = offset + max_rewind - rewind;
|
374
395
|
text->as.literal.data[text->as.literal.len] = 0;
|
375
396
|
|
376
|
-
postprocess_text(parser, post, 0, depth + 1);
|
397
|
+
postprocess_text(parser, post, 0, depth + 1, ext);
|
377
398
|
}
|
378
399
|
|
379
400
|
static cmark_node *postprocess(cmark_syntax_extension *ext, cmark_parser *parser, cmark_node *root) {
|
@@ -400,7 +421,7 @@ static cmark_node *postprocess(cmark_syntax_extension *ext, cmark_parser *parser
|
|
400
421
|
}
|
401
422
|
|
402
423
|
if (ev == CMARK_EVENT_ENTER && node->type == CMARK_NODE_TEXT) {
|
403
|
-
postprocess_text(parser, node, 0, /*depth*/0);
|
424
|
+
postprocess_text(parser, node, 0, /*depth*/ 0, ext);
|
404
425
|
}
|
405
426
|
}
|
406
427
|
|
@@ -409,12 +430,38 @@ static cmark_node *postprocess(cmark_syntax_extension *ext, cmark_parser *parser
|
|
409
430
|
return root;
|
410
431
|
}
|
411
432
|
|
433
|
+
static void html_render(cmark_syntax_extension *extension,
|
434
|
+
cmark_html_renderer *renderer, cmark_node *node,
|
435
|
+
cmark_event_type ev_type, int options) {
|
436
|
+
bool entering = (ev_type == CMARK_EVENT_ENTER);
|
437
|
+
cmark_strbuf *html = renderer->html;
|
438
|
+
|
439
|
+
if (entering) {
|
440
|
+
cmark_strbuf_puts(html, "<a href=\"");
|
441
|
+
if ((options & CMARK_OPT_UNSAFE) ||
|
442
|
+
!(scan_dangerous_url(&node->as.link.url, 0))) {
|
443
|
+
houdini_escape_href(html, node->as.link.url.data, node->as.link.url.len);
|
444
|
+
}
|
445
|
+
if (node->as.link.title.len) {
|
446
|
+
cmark_strbuf_puts(html, "\" title=\"");
|
447
|
+
escape_html(html, node->as.link.title.data, node->as.link.title.len);
|
448
|
+
}
|
449
|
+
if (options & CMARK_OPT_AUTOLINK_CLASS_NAME) {
|
450
|
+
cmark_strbuf_puts(html, "\" class=\"autolink");
|
451
|
+
}
|
452
|
+
cmark_strbuf_puts(html, "\">");
|
453
|
+
} else {
|
454
|
+
cmark_strbuf_puts(html, "</a>");
|
455
|
+
}
|
456
|
+
}
|
457
|
+
|
412
458
|
cmark_syntax_extension *create_autolink_extension(void) {
|
413
459
|
cmark_syntax_extension *ext = cmark_syntax_extension_new("autolink");
|
414
460
|
cmark_llist *special_chars = NULL;
|
415
461
|
|
416
462
|
cmark_syntax_extension_set_match_inline_func(ext, match);
|
417
463
|
cmark_syntax_extension_set_postprocess_func(ext, postprocess);
|
464
|
+
cmark_syntax_extension_set_html_render_func(ext, html_render);
|
418
465
|
|
419
466
|
cmark_mem *mem = cmark_get_default_mem_allocator();
|
420
467
|
special_chars = cmark_llist_append(mem, special_chars, (void *)':');
|
data/ext/qiita_marker/html.c
CHANGED
@@ -227,7 +227,7 @@ static int S_render_node(cmark_html_renderer *renderer, cmark_node *node,
|
|
227
227
|
cmark_strbuf_puts(html, "<pre");
|
228
228
|
cmark_html_render_sourcepos(node, html, options);
|
229
229
|
cmark_strbuf_puts(html, "><code data-metadata=\"");
|
230
|
-
escape_html(html, node->as.code.info.data,
|
230
|
+
escape_html(html, node->as.code.info.data, node->as.code.info.len);
|
231
231
|
if (first_tag < node->as.code.info.len &&
|
232
232
|
(options & CMARK_OPT_FULL_INFO_STRING)) {
|
233
233
|
cmark_strbuf_puts(html, "\" data-meta=\"");
|
data/ext/qiita_marker/qfm.h
CHANGED
@@ -12,6 +12,9 @@ extern "C" {
|
|
12
12
|
/* Prevent parsing Qiita-style Mentions as emphasis. */
|
13
13
|
#define CMARK_OPT_MENTION_NO_EMPHASIS (1 << 26)
|
14
14
|
|
15
|
+
/* Render autolinks with class name */
|
16
|
+
#define CMARK_OPT_AUTOLINK_CLASS_NAME (1 << 27)
|
17
|
+
|
15
18
|
#ifdef __cplusplus
|
16
19
|
}
|
17
20
|
#endif
|
@@ -157,20 +157,7 @@ static int can_contain(cmark_syntax_extension *self, cmark_node *node,
|
|
157
157
|
cmark_node_type child_type) {
|
158
158
|
cmark_node_type node_type = cmark_node_get_type(node);
|
159
159
|
|
160
|
-
|
161
|
-
return
|
162
|
-
// Block
|
163
|
-
child_type == CMARK_NODE_LIST || child_type == CMARK_NODE_PARAGRAPH ||
|
164
|
-
// Inline
|
165
|
-
child_type == CMARK_NODE_TEXT || child_type == CMARK_NODE_CODE ||
|
166
|
-
child_type == CMARK_NODE_HTML_INLINE || child_type == CMARK_NODE_EMPH ||
|
167
|
-
child_type == CMARK_NODE_STRONG || child_type == CMARK_NODE_LINK ||
|
168
|
-
child_type == CMARK_NODE_IMAGE ||
|
169
|
-
child_type == CMARK_NODE_FOOTNOTE_REFERENCE ||
|
170
|
-
child_type == CMARK_NODE_STRIKETHROUGH;
|
171
|
-
}
|
172
|
-
|
173
|
-
return 0;
|
160
|
+
return node_type == CMARK_NODE_QFM_CUSTOM_BLOCK;
|
174
161
|
}
|
175
162
|
|
176
163
|
static int contains_inlines(cmark_syntax_extension *self, cmark_node *node) {
|
data/lib/qiita_marker/config.rb
CHANGED
@@ -14,7 +14,8 @@ module QiitaMarker
|
|
14
14
|
LIBERAL_HTML_TAG: (1 << 12),
|
15
15
|
FOOTNOTES: (1 << 13),
|
16
16
|
STRIKETHROUGH_DOUBLE_TILDE: (1 << 14),
|
17
|
-
MENTION_NO_EMPHASIS: (1 << 26)
|
17
|
+
MENTION_NO_EMPHASIS: (1 << 26),
|
18
|
+
AUTOLINK_CLASS_NAME: (1 << 27)
|
18
19
|
}.freeze,
|
19
20
|
render: {
|
20
21
|
DEFAULT: 0,
|
@@ -31,7 +32,8 @@ module QiitaMarker
|
|
31
32
|
TABLE_PREFER_STYLE_ATTRIBUTES: (1 << 15),
|
32
33
|
FULL_INFO_STRING: (1 << 16),
|
33
34
|
CODE_DATA_METADATA: (1 << 25),
|
34
|
-
MENTION_NO_EMPHASIS: (1 << 26)
|
35
|
+
MENTION_NO_EMPHASIS: (1 << 26),
|
36
|
+
AUTOLINK_CLASS_NAME: (1 << 27)
|
35
37
|
}.freeze,
|
36
38
|
format: %i[html xml commonmark plaintext].freeze
|
37
39
|
}.freeze
|
@@ -96,7 +96,7 @@ module QiitaMarker
|
|
96
96
|
out('><code>')
|
97
97
|
elsif option_enabled?(:CODE_DATA_METADATA)
|
98
98
|
out("<pre#{sourcepos(node)}><code")
|
99
|
-
out(' data-metadata="', node.fence_info
|
99
|
+
out(' data-metadata="', node.fence_info, '"') if node.fence_info && !node.fence_info.empty?
|
100
100
|
out('>')
|
101
101
|
else
|
102
102
|
out("<pre#{sourcepos(node)}><code")
|
data/lib/qiita_marker/version.rb
CHANGED
@@ -0,0 +1,62 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require('test_helper')
|
4
|
+
|
5
|
+
describe 'TestQfmAutolinkClassName' do
|
6
|
+
let(:options) { %i[AUTOLINK_CLASS_NAME] }
|
7
|
+
let(:extensions) { %i[autolink] }
|
8
|
+
let(:text) do
|
9
|
+
<<~MD
|
10
|
+
https://example.com
|
11
|
+
<https://example.com>
|
12
|
+
[Example](https://example.com)
|
13
|
+
test@example.com
|
14
|
+
MD
|
15
|
+
end
|
16
|
+
let(:doc) { QiitaMarker.render_doc(text, options, extensions) }
|
17
|
+
let(:expected) do
|
18
|
+
<<~HTML
|
19
|
+
<p><a href="https://example.com" class="autolink">https://example.com</a>
|
20
|
+
<a href="https://example.com">https://example.com</a>
|
21
|
+
<a href="https://example.com">Example</a>
|
22
|
+
<a href="mailto:test@example.com" class="autolink">test@example.com</a></p>
|
23
|
+
HTML
|
24
|
+
end
|
25
|
+
let(:rendered_html) { doc.to_html(options, extensions) }
|
26
|
+
|
27
|
+
it "appends class name to extension's autolinks" do
|
28
|
+
assert_equal(expected, rendered_html)
|
29
|
+
end
|
30
|
+
|
31
|
+
describe 'without AUTOLINK_CLASS_NAME option' do
|
32
|
+
let(:options) { %i[DEFAULT] }
|
33
|
+
let(:expected) do
|
34
|
+
<<~HTML
|
35
|
+
<p><a href="https://example.com">https://example.com</a>
|
36
|
+
<a href="https://example.com">https://example.com</a>
|
37
|
+
<a href="https://example.com">Example</a>
|
38
|
+
<a href="mailto:test@example.com">test@example.com</a></p>
|
39
|
+
HTML
|
40
|
+
end
|
41
|
+
|
42
|
+
it "does not append class name to extension's autolink" do
|
43
|
+
assert_equal(expected, rendered_html)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe 'without autolink extension' do
|
48
|
+
let(:extensions) { %i[] }
|
49
|
+
let(:expected) do
|
50
|
+
<<~HTML
|
51
|
+
<p>https://example.com
|
52
|
+
<a href="https://example.com">https://example.com</a>
|
53
|
+
<a href="https://example.com">Example</a>
|
54
|
+
test@example.com</p>
|
55
|
+
HTML
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'does not append class name' do
|
59
|
+
assert_equal(expected, rendered_html)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -3,24 +3,39 @@
|
|
3
3
|
require('test_helper')
|
4
4
|
|
5
5
|
class TestQfmCodeDataMetadata < Minitest::Test
|
6
|
-
def
|
6
|
+
def test_to_html
|
7
7
|
text = <<~MD
|
8
|
-
```ruby:example.rb
|
8
|
+
```ruby:example main.rb
|
9
9
|
puts :foo
|
10
10
|
```
|
11
11
|
MD
|
12
|
-
|
13
|
-
|
14
|
-
<pre><code data-metadata="ruby:example.rb">puts :foo
|
12
|
+
doc = render_doc(text)
|
13
|
+
expected = <<~HTML
|
14
|
+
<pre><code data-metadata="ruby:example main.rb">puts :foo
|
15
15
|
</code></pre>
|
16
16
|
HTML
|
17
|
+
|
18
|
+
assert_equal(expected, doc.to_html(:CODE_DATA_METADATA))
|
19
|
+
assert_equal(expected, QiitaMarker::HtmlRenderer.new(options: :CODE_DATA_METADATA).render(doc))
|
17
20
|
end
|
18
21
|
|
19
|
-
def
|
20
|
-
|
22
|
+
def test_with_character_reference
|
23
|
+
text = <<~MD
|
24
|
+
```ruby:example main.rb
|
25
|
+
puts :foo
|
26
|
+
```
|
27
|
+
MD
|
28
|
+
doc = render_doc(text)
|
29
|
+
expected = <<~HTML
|
30
|
+
<pre><code data-metadata="ruby:example main.rb">puts :foo
|
31
|
+
</code></pre>
|
32
|
+
HTML
|
33
|
+
|
34
|
+
assert_equal(expected, doc.to_html(:CODE_DATA_METADATA))
|
35
|
+
assert_equal(expected, QiitaMarker::HtmlRenderer.new(options: :CODE_DATA_METADATA).render(doc))
|
21
36
|
end
|
22
37
|
|
23
|
-
def
|
24
|
-
|
38
|
+
def render_doc(markdown)
|
39
|
+
QiitaMarker.render_doc(markdown, :DEFAULT, [])
|
25
40
|
end
|
26
41
|
end
|
@@ -7,17 +7,33 @@ class TestQfmCustomBlock < Minitest::Test
|
|
7
7
|
text = <<~MD
|
8
8
|
:::foo bar
|
9
9
|
message
|
10
|
+
|
11
|
+
- list1
|
12
|
+
- list2
|
13
|
+
|
14
|
+
```ruby
|
15
|
+
puts 'hello'
|
16
|
+
```
|
17
|
+
|
18
|
+
<div>html block</div>
|
10
19
|
:::
|
11
20
|
MD
|
12
|
-
@doc = QiitaMarker.render_doc(text,
|
21
|
+
@doc = QiitaMarker.render_doc(text, %i[UNSAFE], %i[custom_block])
|
13
22
|
@expected = <<~HTML
|
14
23
|
<div data-type="customblock" data-metadata="foo bar">
|
15
24
|
<p>message</p>
|
25
|
+
<ul>
|
26
|
+
<li>list1</li>
|
27
|
+
<li>list2</li>
|
28
|
+
</ul>
|
29
|
+
<pre><code class="language-ruby">puts 'hello'
|
30
|
+
</code></pre>
|
31
|
+
<div>html block</div>
|
16
32
|
</div>
|
17
33
|
HTML
|
18
34
|
end
|
19
35
|
|
20
36
|
def test_to_html
|
21
|
-
assert_equal(@expected, @doc.to_html(
|
37
|
+
assert_equal(@expected, @doc.to_html(%i[UNSAFE], %i[custom_block]))
|
22
38
|
end
|
23
39
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: qiita_marker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.23.2.
|
4
|
+
version: 0.23.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Qiita Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: awesome_print
|
@@ -257,6 +257,7 @@ files:
|
|
257
257
|
- test/test_options.rb
|
258
258
|
- test/test_pathological_inputs.rb
|
259
259
|
- test/test_plaintext.rb
|
260
|
+
- test/test_qfm_autolink_class_name.rb
|
260
261
|
- test/test_qfm_code_data_metadata.rb
|
261
262
|
- test/test_qfm_custom_block.rb
|
262
263
|
- test/test_qfm_mention_no_emphasis.rb
|
@@ -317,6 +318,7 @@ test_files:
|
|
317
318
|
- test/test_options.rb
|
318
319
|
- test/test_pathological_inputs.rb
|
319
320
|
- test/test_plaintext.rb
|
321
|
+
- test/test_qfm_autolink_class_name.rb
|
320
322
|
- test/test_qfm_code_data_metadata.rb
|
321
323
|
- test/test_qfm_custom_block.rb
|
322
324
|
- test/test_qfm_mention_no_emphasis.rb
|