qiita-markdown 0.44.0 → 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 (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