qiita_marker 0.23.2.2 → 0.23.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +19 -17
  3. data/Rakefile +57 -56
  4. data/bin/qiita_marker +2 -7
  5. data/ext/qiita_marker/blocks.c +4 -1
  6. data/ext/qiita_marker/cmark-gfm_version.h +2 -2
  7. data/ext/qiita_marker/qfm_custom_block.c +33 -52
  8. data/ext/qiita_marker/qiita_marker.c +30 -44
  9. data/ext/qiita_marker/scanners.c +2438 -2450
  10. data/ext/qiita_marker/table.c +28 -2
  11. data/lib/qiita_marker/config.rb +3 -3
  12. data/lib/qiita_marker/node/inspect.rb +8 -18
  13. data/lib/qiita_marker/node.rb +6 -6
  14. data/lib/qiita_marker/renderer/html_renderer.rb +38 -38
  15. data/lib/qiita_marker/renderer.rb +5 -5
  16. data/lib/qiita_marker/version.rb +1 -1
  17. data/lib/qiita_marker.rb +9 -11
  18. data/qiita_marker.gemspec +27 -29
  19. metadata +3 -63
  20. data/test/benchmark.rb +0 -32
  21. data/test/fixtures/curly.md +0 -1
  22. data/test/fixtures/dingus.md +0 -10
  23. data/test/fixtures/strong.md +0 -1
  24. data/test/fixtures/table.md +0 -10
  25. data/test/test_attributes.rb +0 -24
  26. data/test/test_basics.rb +0 -35
  27. data/test/test_commands.rb +0 -72
  28. data/test/test_commonmark.rb +0 -36
  29. data/test/test_doc.rb +0 -130
  30. data/test/test_encoding.rb +0 -23
  31. data/test/test_extensions.rb +0 -116
  32. data/test/test_footnotes.rb +0 -60
  33. data/test/test_gc.rb +0 -47
  34. data/test/test_helper.rb +0 -71
  35. data/test/test_linebreaks.rb +0 -15
  36. data/test/test_maliciousness.rb +0 -262
  37. data/test/test_node.rb +0 -89
  38. data/test/test_options.rb +0 -37
  39. data/test/test_pathological_inputs.rb +0 -94
  40. data/test/test_plaintext.rb +0 -46
  41. data/test/test_qfm_autolink_class_name.rb +0 -62
  42. data/test/test_qfm_code_data_metadata.rb +0 -41
  43. data/test/test_qfm_custom_block.rb +0 -39
  44. data/test/test_qfm_mention_no_emphasis.rb +0 -60
  45. data/test/test_renderer.rb +0 -47
  46. data/test/test_smartpunct.rb +0 -27
  47. data/test/test_spec.rb +0 -30
  48. data/test/test_tasklists.rb +0 -43
  49. 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);
@@ -15,7 +15,7 @@ module QiitaMarker
15
15
  FOOTNOTES: (1 << 13),
16
16
  STRIKETHROUGH_DOUBLE_TILDE: (1 << 14),
17
17
  MENTION_NO_EMPHASIS: (1 << 26),
18
- AUTOLINK_CLASS_NAME: (1 << 27)
18
+ AUTOLINK_CLASS_NAME: (1 << 27),
19
19
  }.freeze,
20
20
  render: {
21
21
  DEFAULT: 0,
@@ -33,9 +33,9 @@ module QiitaMarker
33
33
  FULL_INFO_STRING: (1 << 16),
34
34
  CODE_DATA_METADATA: (1 << 25),
35
35
  MENTION_NO_EMPHASIS: (1 << 26),
36
- AUTOLINK_CLASS_NAME: (1 << 27)
36
+ AUTOLINK_CLASS_NAME: (1 << 27),
37
37
  }.freeze,
38
- format: %i[html xml commonmark plaintext].freeze
38
+ format: [:html, :xml, :commonmark, :plaintext].freeze,
39
39
  }.freeze
40
40
 
41
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
99
  out(' data-metadata="', node.fence_info, '"') if node.fence_info && !node.fence_info.empty?
100
- out('>')
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.2'
4
+ VERSION = "0.23.5.1"
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.2
4
+ version: 0.23.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Qiita Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-11 00:00:00.000000000 Z
11
+ date: 2022-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: awesome_print
@@ -236,36 +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_autolink_class_name.rb
261
- - test/test_qfm_code_data_metadata.rb
262
- - test/test_qfm_custom_block.rb
263
- - test/test_qfm_mention_no_emphasis.rb
264
- - test/test_renderer.rb
265
- - test/test_smartpunct.rb
266
- - test/test_spec.rb
267
- - test/test_tasklists.rb
268
- - test/test_xml.rb
269
239
  homepage: https://github.com/increments/qiita_marker
270
240
  licenses:
271
241
  - MIT
@@ -296,34 +266,4 @@ rubygems_version: 3.1.4
296
266
  signing_key:
297
267
  specification_version: 4
298
268
  summary: Qiita Marker is a Ruby library for Markdown processing, based on CommonMarker.
299
- test_files:
300
- - test/benchmark.rb
301
- - test/fixtures/curly.md
302
- - test/fixtures/dingus.md
303
- - test/fixtures/strong.md
304
- - test/fixtures/table.md
305
- - test/test_attributes.rb
306
- - test/test_basics.rb
307
- - test/test_commands.rb
308
- - test/test_commonmark.rb
309
- - test/test_doc.rb
310
- - test/test_encoding.rb
311
- - test/test_extensions.rb
312
- - test/test_footnotes.rb
313
- - test/test_gc.rb
314
- - test/test_helper.rb
315
- - test/test_linebreaks.rb
316
- - test/test_maliciousness.rb
317
- - test/test_node.rb
318
- - test/test_options.rb
319
- - test/test_pathological_inputs.rb
320
- - test/test_plaintext.rb
321
- - test/test_qfm_autolink_class_name.rb
322
- - test/test_qfm_code_data_metadata.rb
323
- - test/test_qfm_custom_block.rb
324
- - test/test_qfm_mention_no_emphasis.rb
325
- - test/test_renderer.rb
326
- - test/test_smartpunct.rb
327
- - test/test_spec.rb
328
- - test/test_tasklists.rb
329
- - test/test_xml.rb
269
+ test_files: []