qiita_marker 0.23.2.1 → 0.23.5.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 (52) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +19 -17
  3. data/README.md +2 -0
  4. data/Rakefile +57 -56
  5. data/bin/qiita_marker +2 -7
  6. data/ext/qiita_marker/autolink.c +57 -10
  7. data/ext/qiita_marker/cmark-gfm_version.h +2 -2
  8. data/ext/qiita_marker/html.c +1 -1
  9. data/ext/qiita_marker/qfm.h +3 -0
  10. data/ext/qiita_marker/qfm_custom_block.c +1 -14
  11. data/ext/qiita_marker/qfm_mention_no_emphasis.c +1 -1
  12. data/ext/qiita_marker/qiita_marker.c +30 -44
  13. data/ext/qiita_marker/scanners.c +2438 -2450
  14. data/ext/qiita_marker/table.c +28 -2
  15. data/lib/qiita_marker/config.rb +5 -3
  16. data/lib/qiita_marker/node/inspect.rb +8 -18
  17. data/lib/qiita_marker/node.rb +6 -6
  18. data/lib/qiita_marker/renderer/html_renderer.rb +39 -39
  19. data/lib/qiita_marker/renderer.rb +5 -5
  20. data/lib/qiita_marker/version.rb +1 -1
  21. data/lib/qiita_marker.rb +9 -11
  22. data/qiita_marker.gemspec +27 -29
  23. metadata +3 -61
  24. data/test/benchmark.rb +0 -32
  25. data/test/fixtures/curly.md +0 -1
  26. data/test/fixtures/dingus.md +0 -10
  27. data/test/fixtures/strong.md +0 -1
  28. data/test/fixtures/table.md +0 -10
  29. data/test/test_attributes.rb +0 -24
  30. data/test/test_basics.rb +0 -35
  31. data/test/test_commands.rb +0 -72
  32. data/test/test_commonmark.rb +0 -36
  33. data/test/test_doc.rb +0 -130
  34. data/test/test_encoding.rb +0 -23
  35. data/test/test_extensions.rb +0 -116
  36. data/test/test_footnotes.rb +0 -60
  37. data/test/test_gc.rb +0 -47
  38. data/test/test_helper.rb +0 -71
  39. data/test/test_linebreaks.rb +0 -15
  40. data/test/test_maliciousness.rb +0 -262
  41. data/test/test_node.rb +0 -89
  42. data/test/test_options.rb +0 -37
  43. data/test/test_pathological_inputs.rb +0 -94
  44. data/test/test_plaintext.rb +0 -46
  45. data/test/test_qfm_code_data_metadata.rb +0 -26
  46. data/test/test_qfm_custom_block.rb +0 -23
  47. data/test/test_qfm_mention_no_emphasis.rb +0 -60
  48. data/test/test_renderer.rb +0 -47
  49. data/test/test_smartpunct.rb +0 -27
  50. data/test/test_spec.rb +0 -30
  51. data/test/test_tasklists.rb +0 -43
  52. data/test/test_xml.rb +0 -107
@@ -129,6 +129,7 @@ static table_row *row_from_string(cmark_syntax_extension *self,
129
129
  bufsize_t cell_matched = 1, pipe_matched = 1, offset;
130
130
  int expect_more_cells = 1;
131
131
  int row_end_offset = 0;
132
+ int int_overflow_abort = 0;
132
133
 
133
134
  row = (table_row *)parser->mem->calloc(1, sizeof(table_row));
134
135
  row->n_columns = 0;
@@ -161,6 +162,12 @@ static table_row *row_from_string(cmark_syntax_extension *self,
161
162
  ++cell->internal_offset;
162
163
  }
163
164
 
165
+ // make sure we never wrap row->n_columns
166
+ // offset will != len and our exit will clean up as intended
167
+ if (row->n_columns == UINT16_MAX) {
168
+ int_overflow_abort = 1;
169
+ break;
170
+ }
164
171
  row->n_columns += 1;
165
172
  row->cells = cmark_llist_append(parser->mem, row->cells, cell);
166
173
  }
@@ -194,7 +201,7 @@ static table_row *row_from_string(cmark_syntax_extension *self,
194
201
  }
195
202
  }
196
203
 
197
- if (offset != len || row->n_columns == 0) {
204
+ if (offset != len || row->n_columns == 0 || int_overflow_abort) {
198
205
  free_table_row(parser->mem, row);
199
206
  row = NULL;
200
207
  }
@@ -241,6 +248,11 @@ static cmark_node *try_opening_table_header(cmark_syntax_extension *self,
241
248
  marker_row = row_from_string(self, parser,
242
249
  input + cmark_parser_get_first_nonspace(parser),
243
250
  len - cmark_parser_get_first_nonspace(parser));
251
+ // assert may be optimized out, don't rely on it for security boundaries
252
+ if (!marker_row) {
253
+ return parent_container;
254
+ }
255
+
244
256
  assert(marker_row);
245
257
 
246
258
  cmark_arena_push();
@@ -264,6 +276,12 @@ static cmark_node *try_opening_table_header(cmark_syntax_extension *self,
264
276
  len - cmark_parser_get_first_nonspace(parser));
265
277
  header_row = row_from_string(self, parser, (unsigned char *)parent_string,
266
278
  (int)strlen(parent_string));
279
+ // row_from_string can return NULL, add additional check to ensure n_columns match
280
+ if (!marker_row || !header_row || header_row->n_columns != marker_row->n_columns) {
281
+ free_table_row(parser->mem, marker_row);
282
+ free_table_row(parser->mem, header_row);
283
+ return parent_container;
284
+ }
267
285
  }
268
286
 
269
287
  if (!cmark_node_set_type(parent_container, CMARK_NODE_TABLE)) {
@@ -281,8 +299,10 @@ static cmark_node *try_opening_table_header(cmark_syntax_extension *self,
281
299
  parent_container->as.opaque = parser->mem->calloc(1, sizeof(node_table));
282
300
  set_n_table_columns(parent_container, header_row->n_columns);
283
301
 
302
+ // allocate alignments based on marker_row->n_columns
303
+ // since we populate the alignments array based on marker_row->cells
284
304
  uint8_t *alignments =
285
- (uint8_t *)parser->mem->calloc(header_row->n_columns, sizeof(uint8_t));
305
+ (uint8_t *)parser->mem->calloc(marker_row->n_columns, sizeof(uint8_t));
286
306
  cmark_llist *it = marker_row->cells;
287
307
  for (i = 0; it; it = it->next, ++i) {
288
308
  node_cell *node = (node_cell *)it->data;
@@ -351,6 +371,12 @@ static cmark_node *try_opening_table_row(cmark_syntax_extension *self,
351
371
  row = row_from_string(self, parser, input + cmark_parser_get_first_nonspace(parser),
352
372
  len - cmark_parser_get_first_nonspace(parser));
353
373
 
374
+ if (!row) {
375
+ // clean up the dangling node
376
+ cmark_node_free(table_row_block);
377
+ return NULL;
378
+ }
379
+
354
380
  {
355
381
  cmark_llist *tmp;
356
382
  int i, table_columns = get_n_table_columns(parent_container);
@@ -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,9 +32,10 @@ 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
- format: %i[html xml commonmark plaintext].freeze
38
+ format: [:html, :xml, :commonmark, :plaintext].freeze,
37
39
  }.freeze
38
40
 
39
41
  def self.process_options(option, type)
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'pp'
3
+ require "pp"
4
4
 
5
5
  module QiitaMarker
6
6
  class Node
@@ -8,33 +8,23 @@ module QiitaMarker
8
8
  PP_INDENT_SIZE = 2
9
9
 
10
10
  def inspect
11
- PP.pp(self, +'', Float::INFINITY)
11
+ PP.pp(self, +"", Float::INFINITY)
12
12
  end
13
13
 
14
14
  # @param printer [PrettyPrint] pp
15
15
  def pretty_print(printer)
16
- printer.group(PP_INDENT_SIZE, "#<#{self.class}(#{type}):", '>') do
16
+ printer.group(PP_INDENT_SIZE, "#<#{self.class}(#{type}):", ">") do
17
17
  printer.breakable
18
18
 
19
- attrs = %i[
20
- sourcepos
21
- string_content
22
- url
23
- title
24
- header_level
25
- list_type
26
- list_start
27
- list_tight
28
- fence_info
29
- ].map do |name|
19
+ attrs = [:sourcepos, :string_content, :url, :title, :header_level, :list_type, :list_start, :list_tight, :fence_info].map do |name|
30
20
  [name, __send__(name)]
31
21
  rescue NodeError
32
22
  nil
33
23
  end.compact
34
24
 
35
25
  printer.seplist(attrs) do |name, value|
36
- printer.text "#{name}="
37
- printer.pp value
26
+ printer.text("#{name}=")
27
+ printer.pp(value)
38
28
  end
39
29
 
40
30
  if first_child
@@ -46,8 +36,8 @@ module QiitaMarker
46
36
  children << node
47
37
  node = node.next
48
38
  end
49
- printer.text 'children='
50
- printer.pp children
39
+ printer.text("children=")
40
+ printer.pp(children)
51
41
  end
52
42
  end
53
43
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'qiita_marker/node/inspect'
3
+ require "qiita_marker/node/inspect"
4
4
 
5
5
  module QiitaMarker
6
6
  class Node
@@ -27,7 +27,7 @@ module QiitaMarker
27
27
  # Returns a {String}.
28
28
  def to_html(options = :DEFAULT, extensions = [])
29
29
  opts = Config.process_options(options, :render)
30
- _render_html(opts, extensions).force_encoding('utf-8')
30
+ _render_html(opts, extensions).force_encoding("utf-8")
31
31
  end
32
32
 
33
33
  # Public: Convert the node to an XML string.
@@ -37,7 +37,7 @@ module QiitaMarker
37
37
  # Returns a {String}.
38
38
  def to_xml(options = :DEFAULT)
39
39
  opts = Config.process_options(options, :render)
40
- _render_xml(opts).force_encoding('utf-8')
40
+ _render_xml(opts).force_encoding("utf-8")
41
41
  end
42
42
 
43
43
  # Public: Convert the node to a CommonMark string.
@@ -48,7 +48,7 @@ module QiitaMarker
48
48
  # Returns a {String}.
49
49
  def to_commonmark(options = :DEFAULT, width = 120)
50
50
  opts = Config.process_options(options, :render)
51
- _render_commonmark(opts, width).force_encoding('utf-8')
51
+ _render_commonmark(opts, width).force_encoding("utf-8")
52
52
  end
53
53
 
54
54
  # Public: Convert the node to a plain text string.
@@ -59,7 +59,7 @@ module QiitaMarker
59
59
  # Returns a {String}.
60
60
  def to_plaintext(options = :DEFAULT, width = 120)
61
61
  opts = Config.process_options(options, :render)
62
- _render_plaintext(opts, width).force_encoding('utf-8')
62
+ _render_plaintext(opts, width).force_encoding("utf-8")
63
63
  end
64
64
 
65
65
  # Public: Iterate over the children (if any) of the current pointer.
@@ -76,7 +76,7 @@ module QiitaMarker
76
76
 
77
77
  # Deprecated: Please use `each` instead
78
78
  def each_child(&block)
79
- warn '[DEPRECATION] `each_child` is deprecated. Please use `each` instead.'
79
+ warn("[DEPRECATION] `each_child` is deprecated. Please use `each` instead.")
80
80
  each(&block)
81
81
  end
82
82
  end
@@ -9,8 +9,8 @@ module QiitaMarker
9
9
 
10
10
  def header(node)
11
11
  block do
12
- out('<h', node.header_level, "#{sourcepos(node)}>", :children,
13
- '</h', node.header_level, '>')
12
+ out("<h", node.header_level, "#{sourcepos(node)}>", :children,
13
+ "</h", node.header_level, ">")
14
14
  end
15
15
  end
16
16
 
@@ -19,10 +19,10 @@ module QiitaMarker
19
19
  out(:children)
20
20
  else
21
21
  block do
22
- container("<p#{sourcepos(node)}>", '</p>') do
22
+ container("<p#{sourcepos(node)}>", "</p>") do
23
23
  out(:children)
24
24
  if node.parent.type == :footnote_definition && node.next.nil?
25
- out(' ')
25
+ out(" ")
26
26
  out_footnote_backref
27
27
  end
28
28
  end
@@ -36,16 +36,16 @@ module QiitaMarker
36
36
 
37
37
  block do
38
38
  if node.list_type == :bullet_list
39
- container("<ul#{sourcepos(node)}>\n", '</ul>') do
39
+ container("<ul#{sourcepos(node)}>\n", "</ul>") do
40
40
  out(:children)
41
41
  end
42
42
  else
43
43
  start = if node.list_start == 1
44
- "<ol#{sourcepos(node)}>\n"
45
- else
46
- "<ol start=\"#{node.list_start}\"#{sourcepos(node)}>\n"
47
- end
48
- container(start, '</ol>') do
44
+ "<ol#{sourcepos(node)}>\n"
45
+ else
46
+ "<ol start=\"#{node.list_start}\"#{sourcepos(node)}>\n"
47
+ end
48
+ container(start, "</ol>") do
49
49
  out(:children)
50
50
  end
51
51
  end
@@ -57,26 +57,26 @@ module QiitaMarker
57
57
  def list_item(node)
58
58
  block do
59
59
  tasklist_data = tasklist(node)
60
- container("<li#{sourcepos(node)}#{tasklist_data}>#{' ' if tasklist?(node)}", '</li>') do
60
+ container("<li#{sourcepos(node)}#{tasklist_data}>#{" " if tasklist?(node)}", "</li>") do
61
61
  out(:children)
62
62
  end
63
63
  end
64
64
  end
65
65
 
66
66
  def tasklist(node)
67
- return '' unless tasklist?(node)
67
+ return "" unless tasklist?(node)
68
68
 
69
69
  state = if checked?(node)
70
- 'checked="" disabled=""'
71
- else
72
- 'disabled=""'
73
- end
70
+ 'checked="" disabled=""'
71
+ else
72
+ 'disabled=""'
73
+ end
74
74
  "><input type=\"checkbox\" #{state} /"
75
75
  end
76
76
 
77
77
  def blockquote(node)
78
78
  block do
79
- container("<blockquote#{sourcepos(node)}>\n", '</blockquote>') do
79
+ container("<blockquote#{sourcepos(node)}>\n", "</blockquote>") do
80
80
  out(:children)
81
81
  end
82
82
  end
@@ -93,21 +93,21 @@ module QiitaMarker
93
93
  if option_enabled?(:GITHUB_PRE_LANG)
94
94
  out("<pre#{sourcepos(node)}")
95
95
  out(' lang="', node.fence_info.split(/\s+/)[0], '"') if node.fence_info && !node.fence_info.empty?
96
- out('><code>')
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.split(/\s+/)[0], '"') if node.fence_info && !node.fence_info.empty?
100
- out('>')
99
+ out(' data-metadata="', node.fence_info, '"') if node.fence_info && !node.fence_info.empty?
100
+ out(">")
101
101
  else
102
102
  out("<pre#{sourcepos(node)}><code")
103
103
  if node.fence_info && !node.fence_info.empty?
104
104
  out(' class="language-', node.fence_info.split(/\s+/)[0], '">')
105
105
  else
106
- out('>')
106
+ out(">")
107
107
  end
108
108
  end
109
109
  out(escape_html(node.string_content))
110
- out('</code></pre>')
110
+ out("</code></pre>")
111
111
  end
112
112
  end
113
113
 
@@ -116,7 +116,7 @@ module QiitaMarker
116
116
  if option_enabled?(:UNSAFE)
117
117
  out(tagfilter(node.string_content))
118
118
  else
119
- out('<!-- raw HTML omitted -->')
119
+ out("<!-- raw HTML omitted -->")
120
120
  end
121
121
  end
122
122
  end
@@ -125,22 +125,22 @@ module QiitaMarker
125
125
  if option_enabled?(:UNSAFE)
126
126
  out(tagfilter(node.string_content))
127
127
  else
128
- out('<!-- raw HTML omitted -->')
128
+ out("<!-- raw HTML omitted -->")
129
129
  end
130
130
  end
131
131
 
132
132
  def emph(_)
133
- out('<em>', :children, '</em>')
133
+ out("<em>", :children, "</em>")
134
134
  end
135
135
 
136
136
  def strong(_)
137
- out('<strong>', :children, '</strong>')
137
+ out("<strong>", :children, "</strong>")
138
138
  end
139
139
 
140
140
  def link(node)
141
- out('<a href="', node.url.nil? ? '' : escape_href(node.url), '"')
141
+ out('<a href="', node.url.nil? ? "" : escape_href(node.url), '"')
142
142
  out(' title="', escape_html(node.title), '"') if node.title && !node.title.empty?
143
- out('>', :children, '</a>')
143
+ out(">", :children, "</a>")
144
144
  end
145
145
 
146
146
  def image(node)
@@ -149,7 +149,7 @@ module QiitaMarker
149
149
  out(' alt="', :children, '"')
150
150
  end
151
151
  out(' title="', escape_html(node.title), '"') if node.title && !node.title.empty?
152
- out(' />')
152
+ out(" />")
153
153
  end
154
154
 
155
155
  def text(node)
@@ -157,9 +157,9 @@ module QiitaMarker
157
157
  end
158
158
 
159
159
  def code(node)
160
- out('<code>')
160
+ out("<code>")
161
161
  out(escape_html(node.string_content))
162
- out('</code>')
162
+ out("</code>")
163
163
  end
164
164
 
165
165
  def linebreak(_node)
@@ -170,7 +170,7 @@ module QiitaMarker
170
170
  if option_enabled?(:HARDBREAKS)
171
171
  out("<br />\n")
172
172
  elsif option_enabled?(:NOBREAKS)
173
- out(' ')
173
+ out(" ")
174
174
  else
175
175
  out("\n")
176
176
  end
@@ -203,17 +203,17 @@ module QiitaMarker
203
203
 
204
204
  def table_cell(node)
205
205
  align = case @alignments[@column_index]
206
- when :left then ' align="left"'
207
- when :right then ' align="right"'
208
- when :center then ' align="center"'
209
- else; ''
210
- end
206
+ when :left then ' align="left"'
207
+ when :right then ' align="right"'
208
+ when :center then ' align="center"'
209
+ else; ""
210
+ end
211
211
  out(@in_header ? "<th#{align}#{sourcepos(node)}>" : "<td#{align}#{sourcepos(node)}>", :children, @in_header ? "</th>\n" : "</td>\n")
212
212
  @column_index += 1
213
213
  end
214
214
 
215
215
  def strikethrough(_)
216
- out('<del>', :children, '</del>')
216
+ out("<del>", :children, "</del>")
217
217
  end
218
218
 
219
219
  def footnote_reference(node)
@@ -246,7 +246,7 @@ module QiitaMarker
246
246
  end
247
247
 
248
248
  def tasklist?(node)
249
- node.type_string == 'tasklist'
249
+ node.type_string == "tasklist"
250
250
  end
251
251
 
252
252
  def checked?(node)
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'set'
4
- require 'stringio'
3
+ require "set"
4
+ require "stringio"
5
5
 
6
6
  module QiitaMarker
7
7
  class Renderer
@@ -9,9 +9,9 @@ module QiitaMarker
9
9
 
10
10
  def initialize(options: :DEFAULT, extensions: [])
11
11
  @opts = Config.process_options(options, :render)
12
- @stream = StringIO.new(+'')
12
+ @stream = StringIO.new(+"")
13
13
  @need_blocksep = false
14
- @warnings = Set.new []
14
+ @warnings = Set.new([])
15
15
  @in_tight = false
16
16
  @in_plain = false
17
17
  @tagfilter = extensions.include?(:tagfilter)
@@ -121,7 +121,7 @@ module QiitaMarker
121
121
  end
122
122
 
123
123
  def sourcepos(node)
124
- return '' unless option_enabled?(:SOURCEPOS)
124
+ return "" unless option_enabled?(:SOURCEPOS)
125
125
 
126
126
  s = node.sourcepos
127
127
  " data-sourcepos=\"#{s[:start_line]}:#{s[:start_column]}-" \
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module QiitaMarker
4
- VERSION = '0.23.2.1'
4
+ VERSION = "0.23.5.0"
5
5
  end
data/lib/qiita_marker.rb CHANGED
@@ -1,15 +1,15 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'qiita_marker/qiita_marker'
5
- require 'qiita_marker/config'
6
- require 'qiita_marker/node'
7
- require 'qiita_marker/renderer'
8
- require 'qiita_marker/renderer/html_renderer'
9
- require 'qiita_marker/version'
4
+ require "qiita_marker/qiita_marker"
5
+ require "qiita_marker/config"
6
+ require "qiita_marker/node"
7
+ require "qiita_marker/renderer"
8
+ require "qiita_marker/renderer/html_renderer"
9
+ require "qiita_marker/version"
10
10
 
11
11
  begin
12
- require 'awesome_print'
12
+ require "awesome_print"
13
13
  rescue LoadError; end # rubocop:disable Lint/SuppressedException
14
14
  module QiitaMarker
15
15
  # Public: Parses a Markdown string into an HTML string.
@@ -23,9 +23,7 @@ module QiitaMarker
23
23
  raise TypeError, "text must be a String; got a #{text.class}!" unless text.is_a?(String)
24
24
 
25
25
  opts = Config.process_options(options, :render)
26
- text = text.encode('UTF-8')
27
- html = Node.markdown_to_html(text, opts, extensions)
28
- html.force_encoding('UTF-8')
26
+ Node.markdown_to_html(text.encode("UTF-8"), opts, extensions)
29
27
  end
30
28
 
31
29
  # Public: Parses a Markdown string into a `document` node.
@@ -39,7 +37,7 @@ module QiitaMarker
39
37
  raise TypeError, "text must be a String; got a #{text.class}!" unless text.is_a?(String)
40
38
 
41
39
  opts = Config.process_options(options, :parse)
42
- text = text.encode('UTF-8')
40
+ text = text.encode("UTF-8")
43
41
  Node.parse_document(text, text.bytesize, opts, extensions)
44
42
  end
45
43
  end
data/qiita_marker.gemspec CHANGED
@@ -1,40 +1,38 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- lib = File.expand_path('lib', __dir__)
3
+ lib = File.expand_path("lib", __dir__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
- require 'qiita_marker/version'
5
+ require "qiita_marker/version"
6
6
 
7
7
  Gem::Specification.new do |s|
8
- s.name = 'qiita_marker'
8
+ s.name = "qiita_marker"
9
9
  s.version = QiitaMarker::VERSION
10
- s.summary = 'Qiita Marker is a Ruby library for Markdown processing, based on CommonMarker.'
11
- s.description = 'A Ruby library that is the core module of the Qiita-specified markdown processor.'
12
- s.authors = ['Qiita Inc.']
13
- s.homepage = 'https://github.com/increments/qiita_marker'
14
- s.license = 'MIT'
10
+ s.summary = "Qiita Marker is a Ruby library for Markdown processing, based on CommonMarker."
11
+ s.description = "A Ruby library that is the core module of the Qiita-specified markdown processor."
12
+ s.authors = ["Qiita Inc."]
13
+ s.homepage = "https://github.com/increments/qiita_marker"
14
+ s.license = "MIT"
15
15
 
16
- s.files = %w[LICENSE.txt README.md Rakefile qiita_marker.gemspec bin/qiita_marker]
17
- s.files += Dir.glob('lib/**/*.rb')
18
- s.files += Dir.glob('ext/qiita_marker/*.*')
19
- s.test_files = Dir.glob('test/**/*').reject { |f| f == 'test/benchinput.md' || f.start_with?('test/progit/') }
20
- s.extensions = ['ext/qiita_marker/extconf.rb']
16
+ s.files = ["LICENSE.txt", "README.md", "Rakefile", "qiita_marker.gemspec", "bin/qiita_marker"]
17
+ s.files += Dir.glob("lib/**/*.rb")
18
+ s.files += Dir.glob("ext/qiita_marker/*.*")
19
+ s.extensions = ["ext/qiita_marker/extconf.rb"]
21
20
 
22
- s.executables = ['qiita_marker']
23
- s.require_paths = %w[lib ext]
24
- s.required_ruby_version = ['>= 2.6', '< 4.0']
21
+ s.executables = ["qiita_marker"]
22
+ s.require_paths = ["lib", "ext"]
23
+ s.required_ruby_version = [">= 2.6", "< 4.0"]
25
24
 
26
- s.rdoc_options += ['-x', 'ext/qiita_marker/cmark/.*']
25
+ s.metadata["rubygems_mfa_required"] = "true"
27
26
 
28
- s.add_development_dependency 'awesome_print'
29
- s.add_development_dependency 'json', '~> 2.3'
30
- s.add_development_dependency 'minitest', '~> 5.6'
31
- s.add_development_dependency 'minitest-focus', '~> 1.1'
32
- s.add_development_dependency 'rake'
33
- s.add_development_dependency 'rake-compiler', '~> 0.9'
34
- s.add_development_dependency 'rdoc', '~> 6.2'
35
- s.add_development_dependency 'rubocop'
36
- s.add_development_dependency 'rubocop-standard'
37
- s.metadata = {
38
- 'rubygems_mfa_required' => 'true'
39
- }
27
+ s.rdoc_options += ["-x", "ext/qiita_marker/cmark/.*"]
28
+
29
+ s.add_development_dependency("awesome_print")
30
+ s.add_development_dependency("json", "~> 2.3")
31
+ s.add_development_dependency("minitest", "~> 5.6")
32
+ s.add_development_dependency("minitest-focus", "~> 1.1")
33
+ s.add_development_dependency("rake")
34
+ s.add_development_dependency("rake-compiler", "~> 0.9")
35
+ s.add_development_dependency("rdoc", "~> 6.2")
36
+ s.add_development_dependency("rubocop")
37
+ s.add_development_dependency("rubocop-standard")
40
38
  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.1
4
+ version: 0.23.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Qiita Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-08 00:00:00.000000000 Z
11
+ date: 2022-06-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: awesome_print
@@ -236,35 +236,6 @@ files:
236
236
  - lib/qiita_marker/renderer/html_renderer.rb
237
237
  - lib/qiita_marker/version.rb
238
238
  - qiita_marker.gemspec
239
- - test/benchmark.rb
240
- - test/fixtures/curly.md
241
- - test/fixtures/dingus.md
242
- - test/fixtures/strong.md
243
- - test/fixtures/table.md
244
- - test/test_attributes.rb
245
- - test/test_basics.rb
246
- - test/test_commands.rb
247
- - test/test_commonmark.rb
248
- - test/test_doc.rb
249
- - test/test_encoding.rb
250
- - test/test_extensions.rb
251
- - test/test_footnotes.rb
252
- - test/test_gc.rb
253
- - test/test_helper.rb
254
- - test/test_linebreaks.rb
255
- - test/test_maliciousness.rb
256
- - test/test_node.rb
257
- - test/test_options.rb
258
- - test/test_pathological_inputs.rb
259
- - test/test_plaintext.rb
260
- - test/test_qfm_code_data_metadata.rb
261
- - test/test_qfm_custom_block.rb
262
- - test/test_qfm_mention_no_emphasis.rb
263
- - test/test_renderer.rb
264
- - test/test_smartpunct.rb
265
- - test/test_spec.rb
266
- - test/test_tasklists.rb
267
- - test/test_xml.rb
268
239
  homepage: https://github.com/increments/qiita_marker
269
240
  licenses:
270
241
  - MIT
@@ -295,33 +266,4 @@ rubygems_version: 3.1.4
295
266
  signing_key:
296
267
  specification_version: 4
297
268
  summary: Qiita Marker is a Ruby library for Markdown processing, based on CommonMarker.
298
- test_files:
299
- - test/benchmark.rb
300
- - test/fixtures/curly.md
301
- - test/fixtures/dingus.md
302
- - test/fixtures/strong.md
303
- - test/fixtures/table.md
304
- - test/test_attributes.rb
305
- - test/test_basics.rb
306
- - test/test_commands.rb
307
- - test/test_commonmark.rb
308
- - test/test_doc.rb
309
- - test/test_encoding.rb
310
- - test/test_extensions.rb
311
- - test/test_footnotes.rb
312
- - test/test_gc.rb
313
- - test/test_helper.rb
314
- - test/test_linebreaks.rb
315
- - test/test_maliciousness.rb
316
- - test/test_node.rb
317
- - test/test_options.rb
318
- - test/test_pathological_inputs.rb
319
- - test/test_plaintext.rb
320
- - test/test_qfm_code_data_metadata.rb
321
- - test/test_qfm_custom_block.rb
322
- - test/test_qfm_mention_no_emphasis.rb
323
- - test/test_renderer.rb
324
- - test/test_smartpunct.rb
325
- - test/test_spec.rb
326
- - test/test_tasklists.rb
327
- - test/test_xml.rb
269
+ test_files: []