qiita-markdown 0.44.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) 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 +15 -239
  5. data/CHANGELOG.md +15 -0
  6. data/README.md +5 -3
  7. data/lib/qiita/markdown/filters/checkbox.rb +5 -1
  8. data/lib/qiita/markdown/filters/code_block.rb +13 -13
  9. data/lib/qiita/markdown/filters/custom_block.rb +8 -6
  10. data/lib/qiita/markdown/filters/external_link.rb +2 -0
  11. data/lib/qiita/markdown/filters/final_sanitizer.rb +126 -120
  12. data/lib/qiita/markdown/filters/footnote.rb +2 -0
  13. data/lib/qiita/markdown/filters/group_mention.rb +2 -2
  14. data/lib/qiita/markdown/filters/heading_anchor.rb +44 -0
  15. data/lib/qiita/markdown/filters/html_toc.rb +67 -0
  16. data/lib/qiita/markdown/filters/image_link.rb +6 -6
  17. data/lib/qiita/markdown/filters/inline_code_color.rb +8 -8
  18. data/lib/qiita/markdown/filters/mention.rb +11 -9
  19. data/lib/qiita/markdown/filters/qiita_marker.rb +55 -0
  20. data/lib/qiita/markdown/filters/simplify.rb +1 -0
  21. data/lib/qiita/markdown/filters/syntax_highlight.rb +4 -4
  22. data/lib/qiita/markdown/filters/truncate.rb +1 -3
  23. data/lib/qiita/markdown/filters/user_input_sanitizer.rb +34 -29
  24. data/lib/qiita/markdown/processor.rb +2 -1
  25. data/lib/qiita/markdown/summary_processor.rb +1 -1
  26. data/lib/qiita/markdown/transformers/filter_attributes.rb +1 -0
  27. data/lib/qiita/markdown/transformers/filter_iframe.rb +1 -2
  28. data/lib/qiita/markdown/transformers/filter_script.rb +1 -1
  29. data/lib/qiita/markdown/transformers/strip_invalid_node.rb +1 -3
  30. data/lib/qiita/markdown/version.rb +1 -1
  31. data/lib/qiita/markdown.rb +4 -5
  32. data/qiita-markdown.gemspec +7 -8
  33. data/spec/qiita/markdown/filters/checkbox_spec.rb +28 -0
  34. data/spec/qiita/markdown/filters/heading_anchor_spec.rb +73 -0
  35. data/spec/qiita/markdown/filters/html_toc_spec.rb +223 -0
  36. data/spec/qiita/markdown/filters/qiita_marker_spec.rb +60 -0
  37. data/spec/qiita/markdown/processor_spec.rb +64 -70
  38. data/spec/qiita/markdown/summary_processor_spec.rb +4 -4
  39. metadata +80 -102
  40. data/benchmark/heading_anchor_rendering.rb +0 -248
  41. data/benchmark/sample.md +0 -317
  42. data/lib/qiita/markdown/filters/greenmat.rb +0 -38
  43. data/lib/qiita/markdown/greenmat/heading_rendering.rb +0 -61
  44. data/lib/qiita/markdown/greenmat/html_renderer.rb +0 -60
  45. data/lib/qiita/markdown/greenmat/html_toc_renderer.rb +0 -78
  46. data/spec/qiita/markdown/filters/greenmat_spec.rb +0 -15
  47. data/spec/qiita/markdown/greenmat/html_toc_renderer_spec.rb +0 -156
@@ -1,156 +0,0 @@
1
- require "active_support/core_ext/string/strip"
2
-
3
- describe Qiita::Markdown::Greenmat::HTMLToCRenderer do
4
- let(:renderer) { described_class.new(extension) }
5
- let(:extension) { {} }
6
- let(:greenmat) { ::Greenmat::Markdown.new(renderer) }
7
- subject(:rendered_html) { greenmat.render(markdown) }
8
-
9
- context "with duplicated heading names" do
10
- let(:markdown) do
11
- <<-EOS.strip_heredoc
12
- # a
13
- ## a
14
- ### a
15
- ### a
16
- EOS
17
- end
18
-
19
- it "renders ToC anchors with unique ids" do
20
- should eq <<-EOS.strip_heredoc
21
- <ul>
22
- <li>
23
- <a href="#a">a</a>
24
- <ul>
25
- <li>
26
- <a href="#a-1">a</a>
27
- <ul>
28
- <li>
29
- <a href="#a-2">a</a>
30
- </li>
31
- <li>
32
- <a href="#a-3">a</a>
33
- </li>
34
- </ul>
35
- </li>
36
- </ul>
37
- </li>
38
- </ul>
39
- EOS
40
- end
41
- end
42
-
43
- context "with a document starting with level 2 heading" do
44
- let(:markdown) do
45
- <<-EOS.strip_heredoc
46
- ## a
47
- ### a
48
- ## a
49
- EOS
50
- end
51
-
52
- it "offsets the heading levels" do
53
- should eq <<-EOS.strip_heredoc
54
- <ul>
55
- <li>
56
- <a href="#a">a</a>
57
- <ul>
58
- <li>
59
- <a href="#a-1">a</a>
60
- </li>
61
- </ul>
62
- </li>
63
- <li>
64
- <a href="#a-2">a</a>
65
- </li>
66
- </ul>
67
- EOS
68
- end
69
- end
70
-
71
- context "with a document starting with level 2 heading but includes level 1 heading at the end" do
72
- let(:markdown) do
73
- <<-EOS.strip_heredoc
74
- ## a
75
- ### a
76
- # a
77
- EOS
78
- end
79
-
80
- it "does not generate invalid list structure" do
81
- should eq <<-EOS.strip_heredoc
82
- <ul>
83
- <li>
84
- <a href="#a">a</a>
85
- <ul>
86
- <li>
87
- <a href="#a-1">a</a>
88
- </li>
89
- </ul>
90
- </li>
91
- <li>
92
- <a href="#a-2">a</a>
93
- </li>
94
- </ul>
95
- EOS
96
- end
97
- end
98
-
99
- context "with heading title including special HTML characters" do
100
- let(:markdown) do
101
- <<-EOS.strip_heredoc
102
- # <b>R&amp;B</b>
103
- EOS
104
- end
105
-
106
- it "generates fragment identifier by sanitizing the characters in the title" do
107
- should eq <<-EOS.strip_heredoc
108
- <ul>
109
- <li>
110
- <a href="#rb"><b>R&amp;B</b></a>
111
- </li>
112
- </ul>
113
- EOS
114
- end
115
- end
116
-
117
- context "with :escape_html extension" do
118
- let(:extension) { { escape_html: true } }
119
-
120
- context "with heading title including HTML tags" do
121
- let(:markdown) do
122
- <<-EOS.strip_heredoc
123
- # <b>R&amp;B</b>
124
- EOS
125
- end
126
-
127
- it "strips HTML characters in heading title" do
128
- should eq <<-EOS.strip_heredoc
129
- <ul>
130
- <li>
131
- <a href="#rb">R&amp;B</a>
132
- </li>
133
- </ul>
134
- EOS
135
- end
136
- end
137
-
138
- context "with heading title including HTML tags inside of code" do
139
- let(:markdown) do
140
- <<-EOS.strip_heredoc
141
- # `<div>`
142
- EOS
143
- end
144
-
145
- it "escapes HTML tags inside of code" do
146
- should eq <<-EOS.strip_heredoc
147
- <ul>
148
- <li>
149
- <a href="#div">&lt;div&gt;</a>
150
- </li>
151
- </ul>
152
- EOS
153
- end
154
- end
155
- end
156
- end