qiita-markdown 0.44.1 → 1.0.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.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +2 -2
  3. data/.rubocop.yml +0 -4
  4. data/.rubocop_todo.yml +6 -44
  5. data/CHANGELOG.md +10 -0
  6. data/README.md +3 -1
  7. data/lib/qiita/markdown/filters/checkbox.rb +5 -1
  8. data/lib/qiita/markdown/filters/custom_block.rb +7 -6
  9. data/lib/qiita/markdown/filters/final_sanitizer.rb +8 -2
  10. data/lib/qiita/markdown/filters/heading_anchor.rb +44 -0
  11. data/lib/qiita/markdown/filters/html_toc.rb +67 -0
  12. data/lib/qiita/markdown/filters/qiita_marker.rb +55 -0
  13. data/lib/qiita/markdown/filters/user_input_sanitizer.rb +14 -9
  14. data/lib/qiita/markdown/processor.rb +2 -1
  15. data/lib/qiita/markdown/summary_processor.rb +1 -1
  16. data/lib/qiita/markdown/version.rb +1 -1
  17. data/lib/qiita/markdown.rb +4 -5
  18. data/qiita-markdown.gemspec +2 -3
  19. data/spec/qiita/markdown/filters/checkbox_spec.rb +28 -0
  20. data/spec/qiita/markdown/filters/heading_anchor_spec.rb +73 -0
  21. data/spec/qiita/markdown/filters/html_toc_spec.rb +223 -0
  22. data/spec/qiita/markdown/filters/qiita_marker_spec.rb +60 -0
  23. data/spec/qiita/markdown/processor_spec.rb +48 -54
  24. data/spec/qiita/markdown/summary_processor_spec.rb +2 -2
  25. metadata +23 -39
  26. data/benchmark/heading_anchor_rendering.rb +0 -248
  27. data/benchmark/sample.md +0 -317
  28. data/lib/qiita/markdown/filters/greenmat.rb +0 -38
  29. data/lib/qiita/markdown/greenmat/heading_rendering.rb +0 -61
  30. data/lib/qiita/markdown/greenmat/html_renderer.rb +0 -60
  31. data/lib/qiita/markdown/greenmat/html_toc_renderer.rb +0 -78
  32. data/spec/qiita/markdown/filters/greenmat_spec.rb +0 -15
  33. data/spec/qiita/markdown/greenmat/html_toc_renderer_spec.rb +0 -156
@@ -0,0 +1,73 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe Qiita::Markdown::Filters::HeadingAnchor do
4
+ subject(:filter) { described_class.new(html) }
5
+
6
+ let(:html) do
7
+ <<~HTML
8
+ <h1>foo</h1>
9
+ <h2>bar</h2>
10
+ <h3>fizz</h3>
11
+ <p>paragraph</p>
12
+ <h4>buzz</h4>
13
+ <h5>hoge</h5>
14
+ <h6>fuga</h6>
15
+ <code>code</code>
16
+ HTML
17
+ end
18
+
19
+ it "renders ids" do
20
+ expect(filter.call.to_s).to eq(<<~HTML)
21
+ <h1 id="foo">foo</h1>
22
+ <h2 id="bar">bar</h2>
23
+ <h3 id="fizz">fizz</h3>
24
+ <p>paragraph</p>
25
+ <h4 id="buzz">buzz</h4>
26
+ <h5 id="hoge">hoge</h5>
27
+ <h6 id="fuga">fuga</h6>
28
+ <code>code</code>
29
+ HTML
30
+ end
31
+
32
+ context "with headings text is same" do
33
+ let(:html) do
34
+ <<~HTML
35
+ <h1>foo</h1>
36
+ <h2>foo</h2>
37
+ <h3>foo</h3>
38
+ <p>paragraph</p>
39
+ <h4>foo</h4>
40
+ <h5>foo</h5>
41
+ <h6>foo</h6>
42
+ <code>code</code>
43
+ HTML
44
+ end
45
+
46
+ it "renders suffixed ids" do
47
+ expect(filter.call.to_s).to eq(<<~HTML)
48
+ <h1 id="foo">foo</h1>
49
+ <h2 id="foo-1">foo</h2>
50
+ <h3 id="foo-2">foo</h3>
51
+ <p>paragraph</p>
52
+ <h4 id="foo-3">foo</h4>
53
+ <h5 id="foo-4">foo</h5>
54
+ <h6 id="foo-5">foo</h6>
55
+ <code>code</code>
56
+ HTML
57
+ end
58
+ end
59
+
60
+ context "with characters that cannot included" do
61
+ let(:html) do
62
+ <<~HTML
63
+ <h1>test [foo-bar]</h1>
64
+ HTML
65
+ end
66
+
67
+ it "renders id with omitted characters" do
68
+ expect(filter.call.to_s).to eq(<<~HTML)
69
+ <h1 id="test-foo-bar">test [foo-bar]</h1>
70
+ HTML
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,223 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe Qiita::Markdown::Filters::HtmlToc do
4
+ subject(:filter) { described_class.new(html) }
5
+
6
+ context "with headings h1, h2, h3, h4, h5, h6" do
7
+ let(:html) do
8
+ <<~HTML
9
+ <h1 id="foo">foo</h1>
10
+ <h2 id="bar">bar</h2>
11
+ <h3 id="fizz">fizz</h3>
12
+ <p>paragraph</p>
13
+ <h4 id="buzz">buzz</h4>
14
+ <h5 id="hoge">hoge</h5>
15
+ <h6 id="fuga">fuga</h6>
16
+ <code>code</code>
17
+ HTML
18
+ end
19
+
20
+ let(:result) do
21
+ <<~HTML
22
+ <ul>
23
+ <li>
24
+ <a href="#foo">foo</a>
25
+ <ul>
26
+ <li>
27
+ <a href="#bar">bar</a>
28
+ <ul>
29
+ <li>
30
+ <a href="#fizz">fizz</a>
31
+ <ul>
32
+ <li>
33
+ <a href="#buzz">buzz</a>
34
+ <ul>
35
+ <li>
36
+ <a href="#hoge">hoge</a>
37
+ <ul>
38
+ <li>
39
+ <a href="#fuga">fuga</a>
40
+ </li>
41
+ </ul>
42
+ </li>
43
+ </ul>
44
+ </li>
45
+ </ul>
46
+ </li>
47
+ </ul>
48
+ </li>
49
+ </ul>
50
+ </li>
51
+ </ul>
52
+ HTML
53
+ end
54
+
55
+ it "renders nested toc" do
56
+ expect(filter.call).to eq(result)
57
+ end
58
+ end
59
+
60
+ context "headings are same rank" do
61
+ let(:html) do
62
+ <<~HTML
63
+ <h1 id="foo">foo</h1>
64
+ <h1 id="bar">bar</h1>
65
+ <h1 id="fizz">fizz</h1>
66
+ HTML
67
+ end
68
+
69
+ let(:result) do
70
+ <<~HTML
71
+ <ul>
72
+ <li>
73
+ <a href="#foo">foo</a>
74
+ </li>
75
+ <li>
76
+ <a href="#bar">bar</a>
77
+ </li>
78
+ <li>
79
+ <a href="#fizz">fizz</a>
80
+ </li>
81
+ </ul>
82
+ HTML
83
+ end
84
+
85
+ it "renders toc of same level" do
86
+ expect(filter.call).to eq(result)
87
+ end
88
+ end
89
+
90
+ context "with heading rank going up" do
91
+ let(:html) do
92
+ <<~HTML
93
+ <h1 id="foo">foo</h1>
94
+ <h3 id="bar">bar</h3>
95
+ <h1 id="bazz">bazz</h1>
96
+ HTML
97
+ end
98
+
99
+ let(:result) do
100
+ <<~HTML
101
+ <ul>
102
+ <li>
103
+ <a href="#foo">foo</a>
104
+ <ul>
105
+ <li>
106
+ <ul>
107
+ <li>
108
+ <a href="#bar">bar</a>
109
+ </li>
110
+ </ul>
111
+ </li>
112
+ </ul>
113
+ </li>
114
+ <li>
115
+ <a href="#bazz">bazz</a>
116
+ </li>
117
+ </ul>
118
+ HTML
119
+ end
120
+
121
+ it "renders toc that the depth goes up" do
122
+ expect(filter.call).to eq(result)
123
+ end
124
+ end
125
+
126
+ context "with starting from h2" do
127
+ let(:html) do
128
+ <<~HTML
129
+ <h2 id="bar">bar</h2>
130
+ <h3 id="fizz">fizz</h3>
131
+ HTML
132
+ end
133
+
134
+ let(:result) do
135
+ <<~HTML
136
+ <ul>
137
+ <li>
138
+ <a href="#bar">bar</a>
139
+ <ul>
140
+ <li>
141
+ <a href="#fizz">fizz</a>
142
+ </li>
143
+ </ul>
144
+ </li>
145
+ </ul>
146
+ HTML
147
+ end
148
+
149
+ it "renders h2 as top level" do
150
+ expect(filter.call).to eq(result)
151
+ end
152
+ end
153
+
154
+ context "with some heading rank is higher than first heading" do
155
+ let(:html) do
156
+ <<~HTML
157
+ <h2 id="foo">foo</h2>
158
+ <h3 id="bar">bar</h3>
159
+ <h1 id="fizz">fizz</h1>
160
+ <h2 id="bazz">bazz</h2>
161
+ HTML
162
+ end
163
+
164
+ let(:result) do
165
+ <<~HTML
166
+ <ul>
167
+ <li>
168
+ <a href="#foo">foo</a>
169
+ <ul>
170
+ <li>
171
+ <a href="#bar">bar</a>
172
+ </li>
173
+ </ul>
174
+ </li>
175
+ <li>
176
+ <a href="#fizz">fizz</a>
177
+ </li>
178
+ <li>
179
+ <a href="#bazz">bazz</a>
180
+ </li>
181
+ </ul>
182
+ HTML
183
+ end
184
+
185
+ it "renders higher rank headings at the same level as the first heading" do
186
+ expect(filter.call).to eq(result)
187
+ end
188
+ end
189
+
190
+ context "with include html tag" do
191
+ let(:html) do
192
+ <<~HTML
193
+ <h2 id="foo"><strong>foo</strong></h2>
194
+ HTML
195
+ end
196
+
197
+ let(:result) do
198
+ <<~HTML
199
+ <ul>
200
+ <li>
201
+ <a href="#foo">foo</a>
202
+ </li>
203
+ </ul>
204
+ HTML
205
+ end
206
+
207
+ it "anchor text does not include html tag" do
208
+ expect(filter.call).to eq(result)
209
+ end
210
+ end
211
+
212
+ context "without headings" do
213
+ let(:html) do
214
+ <<~HTML
215
+ <p>paragraph</p>
216
+ HTML
217
+ end
218
+
219
+ it "renders empty string" do
220
+ expect(filter.call.to_s).to eq("")
221
+ end
222
+ end
223
+ end
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe Qiita::Markdown::Filters::QiitaMarker do
4
+ subject(:filter) { described_class.new(markdown, context) }
5
+
6
+ let(:context) { nil }
7
+
8
+ context "with footnotes" do
9
+ let(:markdown) do
10
+ <<~MD
11
+ foo [^1]
12
+ [^1]: bar
13
+ MD
14
+ end
15
+
16
+ it "renders footnotes" do
17
+ expect(filter.call.to_s).to include('class="footnotes"')
18
+ end
19
+
20
+ context "and disable footnotes option" do
21
+ let(:context) do
22
+ {
23
+ markdown: {
24
+ footnotes: false,
25
+ },
26
+ }
27
+ end
28
+
29
+ it "does not render footnotes" do
30
+ expect(filter.call.to_s).not_to include('class="footnotes"')
31
+ end
32
+ end
33
+ end
34
+
35
+ context "with sourcepos" do
36
+ let(:markdown) do
37
+ <<~MD
38
+ foo bar
39
+ MD
40
+ end
41
+
42
+ it "does not render HTML containing data-sourcepos" do
43
+ expect(filter.call.to_s).not_to include("data-sourcepos")
44
+ end
45
+
46
+ context "and enable sourcepos option" do
47
+ let(:context) do
48
+ {
49
+ markdown: {
50
+ sourcepos: true,
51
+ },
52
+ }
53
+ end
54
+
55
+ it "renders HTML containing data-sourcepos" do
56
+ expect(filter.call.to_s).to include("data-sourcepos")
57
+ end
58
+ end
59
+ end
60
+ end
@@ -69,16 +69,12 @@ describe Qiita::Markdown::Processor do
69
69
 
70
70
  it "adds ID for ToC" do
71
71
  should eq <<-HTML.strip_heredoc
72
-
73
72
  <h1>
74
73
  <span id="a" class="fragment"></span><a href="#a"><i class="fa fa-link"></i></a>a</h1>
75
-
76
74
  <h2>
77
75
  <span id="a-1" class="fragment"></span><a href="#a-1"><i class="fa fa-link"></i></a>a</h2>
78
-
79
76
  <h3>
80
77
  <span id="a-2" class="fragment"></span><a href="#a-2"><i class="fa fa-link"></i></a>a</h3>
81
-
82
78
  <h3>
83
79
  <span id="a-3" class="fragment"></span><a href="#a-3"><i class="fa fa-link"></i></a>a</h3>
84
80
  HTML
@@ -94,7 +90,6 @@ describe Qiita::Markdown::Processor do
94
90
 
95
91
  it "generates fragment identifier by sanitizing the special characters in the title" do
96
92
  should eq <<-HTML.strip_heredoc
97
-
98
93
  <h1>
99
94
  <span id="rb" class="fragment"></span><a href="#rb"><i class="fa fa-link"></i></a><b>R&amp;B</b>
100
95
  </h1>
@@ -109,9 +104,10 @@ describe Qiita::Markdown::Processor do
109
104
  MARKDOWN
110
105
  end
111
106
 
112
- it "does nothing" do
107
+ it "adds ID for ToC" do
113
108
  should eq <<-HTML.strip_heredoc
114
- <h1>foo</h1>
109
+ <h1>
110
+ <span id="foo" class="fragment"></span><a href="#foo"><i class="fa fa-link"></i></a>foo</h1>
115
111
  HTML
116
112
  end
117
113
  end
@@ -586,8 +582,8 @@ describe Qiita::Markdown::Processor do
586
582
  end
587
583
 
588
584
  it "wraps it in a element while keeping the width attribute" do
589
- should eq %(<p><a href="http://example.com/b.png" target="_blank">) +
590
- %(<img width="80" height="48" alt="a" src="http://example.com/b.png"></a></p>\n)
585
+ should eq %(<a href="http://example.com/b.png" target="_blank">) +
586
+ %(<img width="80" height="48" alt="a" src="http://example.com/b.png"></a>\n)
591
587
  end
592
588
  end
593
589
 
@@ -647,7 +643,7 @@ describe Qiita::Markdown::Processor do
647
643
  let(:markdown) do
648
644
  <<-MARKDOWN.strip_heredoc
649
645
  - [ ] a
650
- - [ ] b
646
+ - [ ] b
651
647
  MARKDOWN
652
648
  end
653
649
 
@@ -656,7 +652,6 @@ describe Qiita::Markdown::Processor do
656
652
  <ul>
657
653
  <li class="task-list-item">
658
654
  <input type="checkbox" class="task-list-item-checkbox" disabled>a
659
-
660
655
  <ul>
661
656
  <li class="task-list-item">
662
657
  <input type="checkbox" class="task-list-item-checkbox" disabled>b</li>
@@ -698,8 +693,12 @@ describe Qiita::Markdown::Processor do
698
693
  it "inserts checkbox" do
699
694
  should eq <<-HTML.strip_heredoc
700
695
  <ul>
701
- <li class="task-list-item"><p><input type="checkbox" class="task-list-item-checkbox" disabled>a</p></li>
702
- <li class="task-list-item"><p><input type="checkbox" class="task-list-item-checkbox" checked disabled>b</p></li>
696
+ <li class="task-list-item">
697
+ <p><input type="checkbox" class="task-list-item-checkbox" disabled>a</p>
698
+ </li>
699
+ <li class="task-list-item">
700
+ <p><input type="checkbox" class="task-list-item-checkbox" checked disabled>b</p>
701
+ </li>
703
702
  </ul>
704
703
  HTML
705
704
  end
@@ -759,20 +758,7 @@ describe Qiita::Markdown::Processor do
759
758
  end
760
759
 
761
760
  it "generates footnotes elements" do
762
- should eq <<-HTML.strip_heredoc
763
- <p><sup id="fnref1"><a href="#fn1" title="test">1</a></sup></p>
764
-
765
- <div class="footnotes">
766
- <hr>
767
- <ol>
768
-
769
- <li id="fn1">
770
- <p>test <a href="#fnref1">↩</a></p>
771
- </li>
772
-
773
- </ol>
774
- </div>
775
- HTML
761
+ should include('class="footnotes"')
776
762
  end
777
763
  end
778
764
 
@@ -837,7 +823,8 @@ describe Qiita::Markdown::Processor do
837
823
 
838
824
  it "does not generate footnote elements" do
839
825
  should eq <<-HTML.strip_heredoc
840
- <p><a href="test">^1</a></p>
826
+ <p>[^1]<br>
827
+ [^1]: test</p>
841
828
  HTML
842
829
  end
843
830
  end
@@ -1085,13 +1072,10 @@ describe Qiita::Markdown::Processor do
1085
1072
 
1086
1073
  it "returns HTML output parsed as markdown" do
1087
1074
  expect(subject).to eq <<-HTML.strip_heredoc
1088
- <p><details><summary>Folding sample</summary><div>
1089
-
1075
+ <details><summary>Folding sample</summary><div>
1090
1076
  <div class="code-frame" data-lang="rb"><div class="highlight"><pre class="codehilite"><code><span class="nb">puts</span> <span class="s2">"Hello, World"</span>
1091
1077
  </code></pre></div></div>
1092
-
1093
- <p></p>
1094
- </div></details></p>
1078
+ </div></details>
1095
1079
  HTML
1096
1080
  end
1097
1081
  end
@@ -1425,14 +1409,14 @@ describe Qiita::Markdown::Processor do
1425
1409
  if allowed
1426
1410
  it "does not sanitize embed code" do
1427
1411
  should eq <<-HTML.strip_heredoc
1428
- <p data-height="1" data-theme-id="0" data-slug-hash="foo" data-default-tab="bar" data-user="baz" data-embed-version="2" data-pen-title="qux" class="codepen"></p>\n
1412
+ <p data-height="1" data-theme-id="0" data-slug-hash="foo" data-default-tab="bar" data-user="baz" data-embed-version="2" data-pen-title="qux" class="codepen"></p>
1429
1413
  <script src="https://production-assets.codepen.io/assets/embed/ei.js"></script>
1430
1414
  HTML
1431
1415
  end
1432
1416
  else
1433
1417
  it "forces async attribute on script" do
1434
1418
  should eq <<-HTML.strip_heredoc
1435
- <p data-height="1" data-theme-id="0" data-slug-hash="foo" data-default-tab="bar" data-user="baz" data-embed-version="2" data-pen-title="qux" class="codepen"></p>\n
1419
+ <p data-height="1" data-theme-id="0" data-slug-hash="foo" data-default-tab="bar" data-user="baz" data-embed-version="2" data-pen-title="qux" class="codepen"></p>
1436
1420
  <script src="https://production-assets.codepen.io/assets/embed/ei.js" async="async"></script>
1437
1421
  HTML
1438
1422
  end
@@ -1450,14 +1434,14 @@ describe Qiita::Markdown::Processor do
1450
1434
  if allowed
1451
1435
  it "does not sanitize embed code" do
1452
1436
  should eq <<-HTML.strip_heredoc
1453
- <p data-height="1" data-theme-id="0" data-slug-hash="foo" data-default-tab="bar" data-user="baz" data-embed-version="2" data-pen-title="qux" class="codepen"></p>\n
1437
+ <p data-height="1" data-theme-id="0" data-slug-hash="foo" data-default-tab="bar" data-user="baz" data-embed-version="2" data-pen-title="qux" class="codepen"></p>
1454
1438
  <script src="https://static.codepen.io/assets/embed/ei.js"></script>
1455
1439
  HTML
1456
1440
  end
1457
1441
  else
1458
1442
  it "forces async attribute on script" do
1459
1443
  should eq <<-HTML.strip_heredoc
1460
- <p data-height="1" data-theme-id="0" data-slug-hash="foo" data-default-tab="bar" data-user="baz" data-embed-version="2" data-pen-title="qux" class="codepen"></p>\n
1444
+ <p data-height="1" data-theme-id="0" data-slug-hash="foo" data-default-tab="bar" data-user="baz" data-embed-version="2" data-pen-title="qux" class="codepen"></p>
1461
1445
  <script src="https://static.codepen.io/assets/embed/ei.js" async="async"></script>
1462
1446
  HTML
1463
1447
  end
@@ -1747,7 +1731,7 @@ describe Qiita::Markdown::Processor do
1747
1731
 
1748
1732
  it "does not sanitize embed code" do
1749
1733
  should eq <<-HTML.strip_heredoc
1750
- <blockquote class="twitter-tweet" data-lang="es" data-cards="hidden" data-conversation="none">foo</blockquote>\n
1734
+ <blockquote class="twitter-tweet" data-lang="es" data-cards="hidden" data-conversation="none">foo</blockquote>
1751
1735
  <script async src="https://platform.twitter.com/widgets.js"></script>
1752
1736
  HTML
1753
1737
  end
@@ -1809,14 +1793,16 @@ describe Qiita::Markdown::Processor do
1809
1793
  if allowed
1810
1794
  it "returns simple div element" do
1811
1795
  should eq <<-HTML.strip_heredoc
1812
- <div data-type="customblock">Some kind of text is here.
1796
+ <div data-type="customblock" data-metadata="">
1797
+ <p>Some kind of text is here.</p>
1813
1798
  </div>
1814
1799
  HTML
1815
1800
  end
1816
1801
  else
1817
1802
  it "returns simple div element" do
1818
1803
  should eq <<-HTML.strip_heredoc
1819
- <div>Some kind of text is here.
1804
+ <div>
1805
+ <p>Some kind of text is here.</p>
1820
1806
  </div>
1821
1807
  HTML
1822
1808
  end
@@ -1829,14 +1815,16 @@ describe Qiita::Markdown::Processor do
1829
1815
  if allowed
1830
1816
  it "returns simple div element" do
1831
1817
  should eq <<-HTML.strip_heredoc
1832
- <div data-type="customblock" data-metadata="anytype">Some kind of text is here.
1818
+ <div data-type="customblock" data-metadata="anytype">
1819
+ <p>Some kind of text is here.</p>
1833
1820
  </div>
1834
1821
  HTML
1835
1822
  end
1836
1823
  else
1837
1824
  it "returns simple div element" do
1838
1825
  should eq <<-HTML.strip_heredoc
1839
- <div>Some kind of text is here.
1826
+ <div>
1827
+ <p>Some kind of text is here.</p>
1840
1828
  </div>
1841
1829
  HTML
1842
1830
  end
@@ -1851,8 +1839,9 @@ describe Qiita::Markdown::Processor do
1851
1839
  it "returns info note block with class including icon as default type" do
1852
1840
  should eq <<-HTML.strip_heredoc
1853
1841
  <div data-type="customblock" data-metadata="note" class="note info">
1854
- <span class="fa fa-fw fa-check-circle"></span><p>Some kind of text is here.
1855
- </p>
1842
+ <span class="fa fa-fw fa-check-circle"></span><div>
1843
+ <p>Some kind of text is here.</p>
1844
+ </div>
1856
1845
  </div>
1857
1846
  HTML
1858
1847
  end
@@ -1860,8 +1849,9 @@ describe Qiita::Markdown::Processor do
1860
1849
  it "returns note block with class including icon" do
1861
1850
  should eq <<-HTML.strip_heredoc
1862
1851
  <div class="note info">
1863
- <span class="fa fa-fw fa-check-circle"></span><p>Some kind of text is here.
1864
- </p>
1852
+ <span class="fa fa-fw fa-check-circle"></span><div>
1853
+ <p>Some kind of text is here.</p>
1854
+ </div>
1865
1855
  </div>
1866
1856
  HTML
1867
1857
  end
@@ -1875,8 +1865,9 @@ describe Qiita::Markdown::Processor do
1875
1865
  it "returns warning note block with class including icon" do
1876
1866
  should eq <<-HTML.strip_heredoc
1877
1867
  <div data-type="customblock" data-metadata="note warn" class="note warn">
1878
- <span class="fa fa-fw fa-exclamation-circle"></span><p>Some kind of text is here.
1879
- </p>
1868
+ <span class="fa fa-fw fa-exclamation-circle"></span><div>
1869
+ <p>Some kind of text is here.</p>
1870
+ </div>
1880
1871
  </div>
1881
1872
  HTML
1882
1873
  end
@@ -1884,8 +1875,9 @@ describe Qiita::Markdown::Processor do
1884
1875
  it "returns note block with class including icon" do
1885
1876
  should eq <<-HTML.strip_heredoc
1886
1877
  <div class="note warn">
1887
- <span class="fa fa-fw fa-exclamation-circle"></span><p>Some kind of text is here.
1888
- </p>
1878
+ <span class="fa fa-fw fa-exclamation-circle"></span><div>
1879
+ <p>Some kind of text is here.</p>
1880
+ </div>
1889
1881
  </div>
1890
1882
  HTML
1891
1883
  end
@@ -1899,8 +1891,9 @@ describe Qiita::Markdown::Processor do
1899
1891
  it "returns alerting note block with class including icon" do
1900
1892
  should eq <<-HTML.strip_heredoc
1901
1893
  <div data-type="customblock" data-metadata="note alert" class="note alert">
1902
- <span class="fa fa-fw fa-times-circle"></span><p>Some kind of text is here.
1903
- </p>
1894
+ <span class="fa fa-fw fa-times-circle"></span><div>
1895
+ <p>Some kind of text is here.</p>
1896
+ </div>
1904
1897
  </div>
1905
1898
  HTML
1906
1899
  end
@@ -1908,8 +1901,9 @@ describe Qiita::Markdown::Processor do
1908
1901
  it "returns note block with class including icon" do
1909
1902
  should eq <<-HTML.strip_heredoc
1910
1903
  <div class="note alert">
1911
- <span class="fa fa-fw fa-times-circle"></span><p>Some kind of text is here.
1912
- </p>
1904
+ <span class="fa fa-fw fa-times-circle"></span><div>
1905
+ <p>Some kind of text is here.</p>
1906
+ </div>
1913
1907
  </div>
1914
1908
  HTML
1915
1909
  end
@@ -111,7 +111,6 @@ describe Qiita::Markdown::SummaryProcessor do
111
111
  it "flattens them" do
112
112
  should eq <<-EOS.strip_heredoc
113
113
  Lorem ipsum dolor sit amet.
114
-
115
114
  Consectetur adipisicing elit.
116
115
  EOS
117
116
  end
@@ -254,7 +253,8 @@ describe Qiita::Markdown::SummaryProcessor do
254
253
 
255
254
  it "does not generate footnote elements by default" do
256
255
  should eq <<-EOS.strip_heredoc
257
- <a href="test">^1</a>
256
+ [^1]
257
+ [^1]: test
258
258
  EOS
259
259
  end
260
260
  end