qiita_marker 0.23.2.1 → 0.23.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.txt +19 -17
- data/README.md +2 -0
- data/Rakefile +57 -56
- data/bin/qiita_marker +2 -7
- data/ext/qiita_marker/autolink.c +57 -10
- data/ext/qiita_marker/cmark-gfm_version.h +2 -2
- 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/ext/qiita_marker/qiita_marker.c +30 -44
- data/ext/qiita_marker/scanners.c +2438 -2450
- data/ext/qiita_marker/table.c +28 -2
- data/lib/qiita_marker/config.rb +5 -3
- data/lib/qiita_marker/node/inspect.rb +8 -18
- data/lib/qiita_marker/node.rb +6 -6
- data/lib/qiita_marker/renderer/html_renderer.rb +39 -39
- data/lib/qiita_marker/renderer.rb +5 -5
- data/lib/qiita_marker/version.rb +1 -1
- data/lib/qiita_marker.rb +9 -11
- data/qiita_marker.gemspec +27 -29
- metadata +3 -61
- data/test/benchmark.rb +0 -32
- data/test/fixtures/curly.md +0 -1
- data/test/fixtures/dingus.md +0 -10
- data/test/fixtures/strong.md +0 -1
- data/test/fixtures/table.md +0 -10
- data/test/test_attributes.rb +0 -24
- data/test/test_basics.rb +0 -35
- data/test/test_commands.rb +0 -72
- data/test/test_commonmark.rb +0 -36
- data/test/test_doc.rb +0 -130
- data/test/test_encoding.rb +0 -23
- data/test/test_extensions.rb +0 -116
- data/test/test_footnotes.rb +0 -60
- data/test/test_gc.rb +0 -47
- data/test/test_helper.rb +0 -71
- data/test/test_linebreaks.rb +0 -15
- data/test/test_maliciousness.rb +0 -262
- data/test/test_node.rb +0 -89
- data/test/test_options.rb +0 -37
- data/test/test_pathological_inputs.rb +0 -94
- data/test/test_plaintext.rb +0 -46
- data/test/test_qfm_code_data_metadata.rb +0 -26
- data/test/test_qfm_custom_block.rb +0 -23
- data/test/test_qfm_mention_no_emphasis.rb +0 -60
- data/test/test_renderer.rb +0 -47
- data/test/test_smartpunct.rb +0 -27
- data/test/test_spec.rb +0 -30
- data/test/test_tasklists.rb +0 -43
- data/test/test_xml.rb +0 -107
data/test/test_smartpunct.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'test_helper'
|
4
|
-
|
5
|
-
class SmartPunctTest < Minitest::Test
|
6
|
-
smart_punct = open_spec_file('smart_punct.txt')
|
7
|
-
|
8
|
-
smart_punct.each do |testcase|
|
9
|
-
doc = QiitaMarker.render_doc(testcase[:markdown], :SMART)
|
10
|
-
html = QiitaMarker.render_html(testcase[:markdown], :SMART)
|
11
|
-
|
12
|
-
define_method("test_smart_punct_example_#{testcase[:example]}") do
|
13
|
-
doc_rendered = doc.to_html.strip
|
14
|
-
html_rendered = html.strip
|
15
|
-
|
16
|
-
assert_equal testcase[:html], doc_rendered, testcase[:markdown]
|
17
|
-
assert_equal testcase[:html], html_rendered, testcase[:markdown]
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_smart_hardbreak_no_spaces_render_doc
|
22
|
-
markdown = "\"foo\"\nbaz"
|
23
|
-
result = "<p>“foo”<br />\nbaz</p>\n"
|
24
|
-
doc = QiitaMarker.render_doc(markdown, :SMART)
|
25
|
-
assert_equal result, doc.to_html([:HARDBREAKS])
|
26
|
-
end
|
27
|
-
end
|
data/test/test_spec.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'test_helper'
|
4
|
-
require 'json'
|
5
|
-
|
6
|
-
class TestSpec < Minitest::Test
|
7
|
-
spec = open_spec_file('spec.txt')
|
8
|
-
|
9
|
-
spec.each do |testcase|
|
10
|
-
next if testcase[:extensions].include?(:disabled)
|
11
|
-
|
12
|
-
doc = QiitaMarker.render_doc(testcase[:markdown], :DEFAULT, testcase[:extensions])
|
13
|
-
|
14
|
-
define_method("test_to_html_example_#{testcase[:example]}") do
|
15
|
-
actual = doc.to_html(:UNSAFE, testcase[:extensions]).rstrip
|
16
|
-
assert_equal testcase[:html], actual, testcase[:markdown]
|
17
|
-
end
|
18
|
-
|
19
|
-
define_method("test_html_renderer_example_#{testcase[:example]}") do
|
20
|
-
actual = HtmlRenderer.new(options: :UNSAFE, extensions: testcase[:extensions]).render(doc).rstrip
|
21
|
-
assert_equal testcase[:html], actual, testcase[:markdown]
|
22
|
-
end
|
23
|
-
|
24
|
-
define_method("test_sourcepos_example_#{testcase[:example]}") do
|
25
|
-
lhs = doc.to_html(%i[UNSAFE SOURCEPOS], testcase[:extensions]).rstrip
|
26
|
-
rhs = HtmlRenderer.new(options: %i[UNSAFE SOURCEPOS], extensions: testcase[:extensions]).render(doc).rstrip
|
27
|
-
assert_equal lhs, rhs, testcase[:markdown]
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
data/test/test_tasklists.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'test_helper'
|
4
|
-
|
5
|
-
class TestTasklists < Minitest::Test
|
6
|
-
def setup
|
7
|
-
text = <<-MD
|
8
|
-
- [x] Add task list
|
9
|
-
- [ ] Define task list
|
10
|
-
MD
|
11
|
-
@doc = QiitaMarker.render_doc(text, :DEFAULT, %i[tasklist])
|
12
|
-
@expected = <<~HTML
|
13
|
-
<ul>
|
14
|
-
<li><input type="checkbox" checked="" disabled="" /> Add task list</li>
|
15
|
-
<li><input type="checkbox" disabled="" /> Define task list</li>
|
16
|
-
</ul>
|
17
|
-
HTML
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_to_html
|
21
|
-
assert_equal @expected, @doc.to_html
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_html_renderer
|
25
|
-
assert_equal @expected, QiitaMarker::HtmlRenderer.new.render(@doc)
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_tasklist_state
|
29
|
-
list = @doc.first_child
|
30
|
-
assert_equal 'checked', list.first_child.tasklist_state
|
31
|
-
assert list.first_child.tasklist_item_checked?
|
32
|
-
assert_equal 'unchecked', list.first_child.next.tasklist_state
|
33
|
-
refute list.first_child.next.tasklist_item_checked?
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_set_tasklist_state
|
37
|
-
list = @doc.first_child
|
38
|
-
list.first_child.tasklist_item_checked = false
|
39
|
-
refute list.first_child.tasklist_item_checked?
|
40
|
-
list.first_child.next.tasklist_item_checked = true
|
41
|
-
assert list.first_child.next.tasklist_item_checked?
|
42
|
-
end
|
43
|
-
end
|
data/test/test_xml.rb
DELETED
@@ -1,107 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'test_helper'
|
4
|
-
|
5
|
-
class TestXml < Minitest::Test
|
6
|
-
def setup
|
7
|
-
@markdown = <<~MD
|
8
|
-
Hi *there*!
|
9
|
-
|
10
|
-
1. I am a numeric list.
|
11
|
-
2. I continue the list.
|
12
|
-
* Suddenly, an unordered list!
|
13
|
-
* What fun!
|
14
|
-
|
15
|
-
Okay, _enough_.
|
16
|
-
|
17
|
-
| a | b |
|
18
|
-
| --- | --- |
|
19
|
-
| c | d |
|
20
|
-
MD
|
21
|
-
end
|
22
|
-
|
23
|
-
def render_doc(doc)
|
24
|
-
QiitaMarker.render_doc(doc, :DEFAULT, [:table])
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_to_xml
|
28
|
-
compare = render_doc(@markdown).to_xml(:SOURCEPOS)
|
29
|
-
|
30
|
-
assert_equal <<~XML, compare
|
31
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
32
|
-
<!DOCTYPE document SYSTEM "CommonMark.dtd">
|
33
|
-
<document sourcepos="1:1-12:13" xmlns="http://commonmark.org/xml/1.0">
|
34
|
-
<paragraph sourcepos="1:1-1:11">
|
35
|
-
<text sourcepos="1:1-1:3" xml:space="preserve">Hi </text>
|
36
|
-
<emph sourcepos="1:4-1:10">
|
37
|
-
<text sourcepos="1:5-1:9" xml:space="preserve">there</text>
|
38
|
-
</emph>
|
39
|
-
<text sourcepos="1:11-1:11" xml:space="preserve">!</text>
|
40
|
-
</paragraph>
|
41
|
-
<list sourcepos="3:1-4:23" type="ordered" start="1" delim="period" tight="true">
|
42
|
-
<item sourcepos="3:1-3:23">
|
43
|
-
<paragraph sourcepos="3:4-3:23">
|
44
|
-
<text sourcepos="3:4-3:23" xml:space="preserve">I am a numeric list.</text>
|
45
|
-
</paragraph>
|
46
|
-
</item>
|
47
|
-
<item sourcepos="4:1-4:23">
|
48
|
-
<paragraph sourcepos="4:4-4:23">
|
49
|
-
<text sourcepos="4:4-4:23" xml:space="preserve">I continue the list.</text>
|
50
|
-
</paragraph>
|
51
|
-
</item>
|
52
|
-
</list>
|
53
|
-
<list sourcepos="5:1-7:0" type="bullet" tight="true">
|
54
|
-
<item sourcepos="5:1-5:30">
|
55
|
-
<paragraph sourcepos="5:3-5:30">
|
56
|
-
<text sourcepos="5:3-5:30" xml:space="preserve">Suddenly, an unordered list!</text>
|
57
|
-
</paragraph>
|
58
|
-
</item>
|
59
|
-
<item sourcepos="6:1-7:0">
|
60
|
-
<paragraph sourcepos="6:3-6:11">
|
61
|
-
<text sourcepos="6:3-6:11" xml:space="preserve">What fun!</text>
|
62
|
-
</paragraph>
|
63
|
-
</item>
|
64
|
-
</list>
|
65
|
-
<paragraph sourcepos="8:1-8:15">
|
66
|
-
<text sourcepos="8:1-8:6" xml:space="preserve">Okay, </text>
|
67
|
-
<emph sourcepos="8:7-8:14">
|
68
|
-
<text sourcepos="8:8-8:13" xml:space="preserve">enough</text>
|
69
|
-
</emph>
|
70
|
-
<text sourcepos="8:15-8:15" xml:space="preserve">.</text>
|
71
|
-
</paragraph>
|
72
|
-
<table sourcepos="10:1-12:13">
|
73
|
-
<table_header sourcepos="10:1-10:13">
|
74
|
-
<table_cell sourcepos="10:2-10:6">
|
75
|
-
<text sourcepos="10:3-10:3" xml:space="preserve">a</text>
|
76
|
-
</table_cell>
|
77
|
-
<table_cell sourcepos="10:8-10:12">
|
78
|
-
<text sourcepos="10:9-10:9" xml:space="preserve">b</text>
|
79
|
-
</table_cell>
|
80
|
-
</table_header>
|
81
|
-
<table_row sourcepos="12:1-12:13">
|
82
|
-
<table_cell sourcepos="12:2-12:6">
|
83
|
-
<text sourcepos="12:3-12:3" xml:space="preserve">c</text>
|
84
|
-
</table_cell>
|
85
|
-
<table_cell sourcepos="12:8-12:12">
|
86
|
-
<text sourcepos="12:9-12:9" xml:space="preserve">d</text>
|
87
|
-
</table_cell>
|
88
|
-
</table_row>
|
89
|
-
</table>
|
90
|
-
</document>
|
91
|
-
XML
|
92
|
-
end
|
93
|
-
|
94
|
-
def test_to_xml_with_quotes
|
95
|
-
compare = render_doc('"quotes" should be escaped').to_xml(:DEFAULT)
|
96
|
-
|
97
|
-
assert_equal <<~XML, compare
|
98
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
99
|
-
<!DOCTYPE document SYSTEM "CommonMark.dtd">
|
100
|
-
<document xmlns="http://commonmark.org/xml/1.0">
|
101
|
-
<paragraph>
|
102
|
-
<text xml:space="preserve">"quotes" should be escaped</text>
|
103
|
-
</paragraph>
|
104
|
-
</document>
|
105
|
-
XML
|
106
|
-
end
|
107
|
-
end
|