yaml-sort 1.0.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b17a9fdbfc9612b6b2bb1a75583e9a31c269fbba87c088afc0fc6ffe16e44aa1
4
- data.tar.gz: edde89f395f92d321c95e4899c6744bba2b005b93aa4399c00d090c4511a27ac
3
+ metadata.gz: e8eee6a8ad9b5761ffc9e9ef08f6025c66e3c661acfef15f197b3d28f67e3253
4
+ data.tar.gz: 108d4ea68106e308eafbe6bce7cd372556ebde65010ade2b1b742e82f43f29d5
5
5
  SHA512:
6
- metadata.gz: a3a763b77216fad635aec8707d388d1bc1c8afb1ccd2217922b17c6179bc59d6c1998459c3e131375d1fed6e743d94d2d39dc2f080bd4adf45b42a73aff56b94
7
- data.tar.gz: 11573f243771dcd0ec7c52748a9927c358472860e0a52e287f8764c960e539aa76b6df6ee6f2fff724eb9f5e780c2b62d7921b65b1d0f9aaf696d388e618b6f4
6
+ metadata.gz: 234b85bdf4dd61f2bfa5a8568c59979ad12c374af47daed35d0a7248b0e1b8f96aed17bc77ba17ca2d8a7233d55803c9d6c5a4fcfa962394d6183ff61a3e9e21
7
+ data.tar.gz: 525ca02351c0f79d86a6e367341b4c8750b294400ffd96a7d4ad00dfced59de0e16060b29a5ceb0b0dcb40d95db9f8d1f1b8fcaabbfb1dfb6c3a58fa470ad27d
data/CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
1
- ## [Unreleased]
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
4
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
2
5
 
3
- ## [0.1.0] - 2022-04-09
6
+ ## [2.0.1](https://github.com/smortex/yaml-sort/tree/2.0.1) (2022-06-01)
4
7
 
5
- - Initial release
8
+ [Full Changelog](https://github.com/smortex/yaml-sort/compare/v2.0.0...2.0.1)
9
+
10
+ **Fixed bugs:**
11
+
12
+ - Fix parsing of keys with spaces [\#8](https://github.com/smortex/yaml-sort/pull/8) ([smortex](https://github.com/smortex))
13
+
14
+ ## [v2.0.0](https://github.com/smortex/yaml-sort/tree/v2.0.0) (2022-04-25)
15
+
16
+ [Full Changelog](https://github.com/smortex/yaml-sort/compare/v1.0.1...v2.0.0)
17
+
18
+ **Merged pull requests:**
19
+
20
+ - Rework list sorting [\#7](https://github.com/smortex/yaml-sort/pull/7) ([smortex](https://github.com/smortex))
21
+
22
+ ## [v1.0.1](https://github.com/smortex/yaml-sort/tree/v1.0.1) (2022-04-24)
23
+
24
+ [Full Changelog](https://github.com/smortex/yaml-sort/compare/v1.0.0...v1.0.1)
25
+
26
+ **Fixed bugs:**
27
+
28
+ - Fix processing of some YAML files without a `START_OF_DOCUMENT` [\#6](https://github.com/smortex/yaml-sort/pull/6) ([smortex](https://github.com/smortex))
29
+ - Fix error reporting [\#5](https://github.com/smortex/yaml-sort/pull/5) ([smortex](https://github.com/smortex))
30
+ - Fix display of filename on parse errors [\#1](https://github.com/smortex/yaml-sort/pull/1) ([smortex](https://github.com/smortex))
31
+
32
+
33
+
34
+ \* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
data/Rakefile CHANGED
@@ -21,3 +21,19 @@ end
21
21
 
22
22
  task spec: ["lib/yaml/sort/parser.rb"]
23
23
  task cucumber: ["lib/yaml/sort/parser.rb"]
24
+
25
+ require "github_changelog_generator/task"
26
+ GitHubChangelogGenerator::RakeTask.new :changelog do |config|
27
+ config.future_release = Yaml::Sort::VERSION
28
+ config.header = <<~HEADER.chomp
29
+ # Changelog
30
+ All notable changes to this project will be documented in this file.
31
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
32
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
33
+ HEADER
34
+ config.exclude_labels = %w[duplicate question invalid wontfix wont-fix skip-changelog ignore]
35
+ config.user = "smortex"
36
+ config.project = "yaml-sort"
37
+ config.since_tag = "v1.0.0"
38
+ config.issues = false
39
+ end
data/lib/yaml/sort/cli.rb CHANGED
@@ -52,8 +52,11 @@ module Yaml
52
52
 
53
53
  def process_document(filename, options)
54
54
  yaml = read_document(filename)
55
- sorted_yaml = sort_yaml(yaml)
55
+ sorted_yaml = sort_yaml(yaml, filename)
56
56
  write_output(yaml, sorted_yaml, filename, options)
57
+ rescue Racc::ParseError => e
58
+ warn(e.message)
59
+ @exit_code = 1
57
60
  end
58
61
 
59
62
  def read_document(filename)
@@ -64,8 +67,8 @@ module Yaml
64
67
  end
65
68
  end
66
69
 
67
- def sort_yaml(yaml)
68
- document = @parser.parse(yaml)
70
+ def sort_yaml(yaml, filename)
71
+ document = @parser.parse(yaml, filename: filename)
69
72
  document = document.sort
70
73
  "---\n#{document}\n"
71
74
  end
@@ -20,13 +20,15 @@ module Yaml
20
20
  dict
21
21
  end
22
22
 
23
- def to_s
23
+ def to_s(skip_first_indent: false)
24
+ n = -1
24
25
  super + items.map do |k, v|
26
+ n += 1
25
27
  case v
26
28
  when List, Dictionary
27
- "#{k}\n#{v}"
29
+ "#{k.to_s(skip_first_indent: skip_first_indent && n.zero?)}\n#{v}"
28
30
  when Scalar
29
- "#{k} #{v}"
31
+ "#{k.to_s(skip_first_indent: skip_first_indent && n.zero?)} #{v}"
30
32
  end
31
33
  end.join("\n")
32
34
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "scalar"
4
+
5
+ module Yaml
6
+ module Sort
7
+ class Item < Scalar
8
+ def to_s(*)
9
+ comments + value
10
+ end
11
+ end
12
+ end
13
+ end
@@ -22,15 +22,13 @@ module Yaml
22
22
 
23
23
  def to_s
24
24
  super + items.map do |item|
25
- "#{item[0]}#{item[1]}"
25
+ "#{item[0]}#{item[1].to_s(skip_first_indent: true)}"
26
26
  end.join("\n")
27
27
  end
28
28
 
29
29
  def sort
30
- List.new(items.sort { |a, b| a[1] <=> b[1] })
31
- rescue ArgumentError
32
- # Non-comparable items
33
- self
30
+ # TODO: Add an option to sort scalar values
31
+ List.new(items.map { |i| [i[0], i[1].sort] })
34
32
  end
35
33
  end
36
34
  end
@@ -13,9 +13,11 @@ module Yaml
13
13
  module Sort
14
14
  class Parser < Racc::Parser
15
15
 
16
- module_eval(<<'...end parser.ra/module_eval...', 'parser.ra', 34)
16
+ module_eval(<<'...end parser.ra/module_eval...', 'parser.ra', 33)
17
17
 
18
18
  def scan(text)
19
+ text = "---\n#{text}" unless text.start_with?("---\n")
20
+
19
21
  scan_value = false
20
22
 
21
23
  @lines = text.lines
@@ -29,7 +31,7 @@ def scan(text)
29
31
  until s.eos?
30
32
  if scan_value
31
33
  unless s.match?(/[[:space:]]*\n/)
32
- @position += s.matched_size if s.scan(/\s*/)
34
+ @position += s.matched_size if s.scan(/[[:blank:]]*/)
33
35
  case
34
36
  when s.scan(/[|>][-+]?(?=\n)/)
35
37
  match = s.matched
@@ -68,25 +70,41 @@ def scan(text)
68
70
  scan_value = false
69
71
  else
70
72
  case
71
- when s.scan(/---/) then emit(:START_OF_DOCUMENT, s.matched)
72
- when s.scan(/(\n\s*)+(?=\n)/) then # Ignore empty lines
73
- when s.scan(/\n?\s*#.*/) then emit(:COMMENT, s.matched)
74
- when s.scan(/\n?(\s*-) */) then emit("-", s.matched, indent: s.captures[0])
75
- when s.scan(/\n?\s*\.\.\./) then emit(:END_OF_DOCUMENT, s.matched)
76
- when s.scan(/\n?(\s*)([^[[:space:]]\n]+):(?=[ \n])/)
73
+ when s.scan(/---/) then emit(:START_OF_DOCUMENT, s.matched)
74
+ when s.scan(/\n[[:blank:]]*(?=\n)/)
75
+ # Ignore empty lines
76
+ @lineno += 1
77
+ @position = 0
78
+ when s.scan(/\n[[:blank:]]*#.*/) then emit(:COMMENT, s.matched)
79
+ when s.scan(/\n([[:blank:]]*-) */) then emit(:ITEM, s.matched, indent: s.captures[0])
80
+ when s.scan(/\n[[:blank:]]*\.\.\./) then emit(:END_OF_DOCUMENT, s.matched)
81
+ when s.scan(/\n?([[:blank:]]*)(.+:)(?=[ \n])/)
77
82
  indent = s.captures[0]
78
83
  indent = last_indent_value + indent + " " unless s.matched.start_with?("\n")
79
- emit(:KEY, s.matched, indent: indent)
84
+ emit(:KEY, s.matched, indent: indent, value: s.captures[1])
80
85
 
81
86
  when s.scan(/\n\z/)
82
87
  # Done
83
- when s.match?(/./)
84
- scan_value = true
88
+ when s.match?(/./)
89
+ scan_value = true
85
90
  else
86
- raise "LoST: #{s.rest.inspect} #{s.eos?}"
87
- end
88
- end
89
- end
91
+ message = if @lines[@lineno - 1][@position] == "\n"
92
+ <<~MESSAGE
93
+ #{@filename}:#{@lineno + 1}: unexpected content
94
+ #{@lines[@lineno].chomp}
95
+ ^#{"~" * (@lines[@lineno].chomp.length - 1)}
96
+ MESSAGE
97
+ else
98
+ <<~MESSAGE
99
+ #{@filename}:#{@lineno}: unexpected content
100
+ #{@lines[@lineno - 1].chomp}
101
+ #{" " * @position}^
102
+ MESSAGE
103
+ end
104
+ raise(Racc::ParseError, message)
105
+ end
106
+ end
107
+ end
90
108
 
91
109
  unindent
92
110
 
@@ -105,16 +123,16 @@ def scan(text)
105
123
  @tokens
106
124
  end
107
125
 
108
- def emit(token, value, length: nil, indent: nil)
126
+ def emit(token, match, length: nil, indent: nil, value: nil)
109
127
  indent.gsub!("-", " ") if indent
110
128
  if token && length.nil?
111
- raise "length must be explicitly passed when value is not a String (#{value.class.name})" unless value.is_a?(String)
112
- length = value.length
129
+ raise "length must be explicitly passed when match is not a String (#{match.class.name})" unless match.is_a?(String)
130
+ length = match.length
113
131
  end
114
132
 
115
- if value.start_with?("\n")
133
+ if match.start_with?("\n")
116
134
  @lineno += 1
117
- value = value[1..-1]
135
+ match = match[1..-1]
118
136
  length -= 1
119
137
  @position = 0
120
138
  end
@@ -125,16 +143,15 @@ def emit(token, value, length: nil, indent: nil)
125
143
  end
126
144
 
127
145
  exvalue = {
128
- value: value,
146
+ value: value || match,
129
147
  lineno: @lineno,
130
148
  position: @position,
131
- filename: @filename,
132
149
  length: length,
133
150
  indent: indent,
134
151
  }
135
152
  @tokens << [token, exvalue]
136
153
 
137
- @lineno += value.count("\n")
154
+ @lineno += match.count("\n")
138
155
 
139
156
  @position += length
140
157
  end
@@ -146,7 +163,7 @@ end
146
163
  def unindent(new_indent = nil)
147
164
  while @indent_stack.count > 0 && (new_indent.nil? || @indent_stack.last.length > new_indent.length)
148
165
  value = @indent_stack.pop
149
- @tokens << [:UNINDENT, { value: value, lineno: @lineno, position: 0, filename: @filename, length: value.length, indent: nil }]
166
+ @tokens << [:UNINDENT, { value: value, lineno: @lineno, position: 0, length: value.length, indent: nil }]
150
167
  end
151
168
  end
152
169
 
@@ -154,73 +171,73 @@ def next_token
154
171
  @current_token = @tokens.shift
155
172
  end
156
173
 
157
- def parse(text)
174
+ def parse(text, filename: nil)
175
+ @filename = filename || "<stdin>"
158
176
  scan(text)
159
177
  do_parse
160
178
  end
161
179
 
162
180
  def on_error(error_token_id, error_value, value_stack)
163
- puts "unexpected #{@current_token[0]} on #{@current_token[1][:filename] || "<stdin>"}:#{@current_token[1][:lineno]}"
164
- puts @lines[@current_token[1][:lineno]]
165
- puts " " * @current_token[1][:position] + "^" + "~" * (@current_token[1][:length] - 1)
181
+ message = if @current_token
182
+ <<~MESSAGE
183
+ #{@filename}:#{@current_token[1][:lineno]} unexpected #{@current_token[0]}
184
+ #{@lines[@current_token[1][:lineno] - 1].chomp}
185
+ #{" " * @current_token[1][:position]}^#{"~" * ([@current_token[1][:length] - 1, 0].max)}
186
+ MESSAGE
187
+ else
188
+ "#{@filename}:#{@lineno} unexpected end-of-file"
189
+ end
166
190
 
167
- raise "Error"
191
+ raise(Racc::ParseError, message)
168
192
  end
169
193
  ...end parser.ra/module_eval...
170
194
  ##### State transition tables begin ###
171
195
 
172
196
  racc_action_table = [
173
- 2, 11, 4, 8, 19, 10, 4, 8, 20, 10,
174
- 4, 8, nil, 10, 4, 8, nil, 10, 8, 13,
175
- 15, 10 ]
197
+ 5, 9, 2, 11, 5, 9, 3, 11, 5, 9,
198
+ 12, 11, 9, 14, 16, 11, 13 ]
176
199
 
177
200
  racc_action_check = [
178
- 0, 1, 0, 0, 11, 0, 2, 2, 12, 2,
179
- 8, 8, nil, 8, 10, 10, nil, 10, 5, 5,
180
- 6, 6 ]
201
+ 2, 2, 0, 2, 9, 9, 1, 9, 11, 11,
202
+ 3, 11, 6, 6, 7, 7, 4 ]
181
203
 
182
204
  racc_action_pointer = [
183
- -2, 1, 2, nil, nil, 13, 14, nil, 6, nil,
184
- 10, 4, 5, nil, nil, nil, nil, nil, nil, nil,
185
- nil ]
205
+ 0, 6, -4, 10, 13, nil, 7, 8, nil, 0,
206
+ nil, 4, nil, nil, nil, nil, nil, nil, nil, nil ]
186
207
 
187
208
  racc_action_default = [
188
- -13, -13, -13, -3, -4, -13, -13, -8, -13, -11,
189
- -13, -13, -2, -5, -7, -6, -10, -9, -12, 21,
190
- -1 ]
209
+ -12, -12, -12, -12, -2, -3, -12, -12, -7, -12,
210
+ -10, -12, 20, -1, -4, -6, -5, -9, -8, -11 ]
191
211
 
192
212
  racc_goto_table = [
193
- 3, 1, 12, 14, 16, nil, nil, nil, 17, nil,
194
- 18 ]
213
+ 4, 1, 15, 17, nil, nil, nil, 18, nil, 19 ]
195
214
 
196
215
  racc_goto_check = [
197
- 2, 1, 2, 5, 6, nil, nil, nil, 2, nil,
198
- 2 ]
216
+ 2, 1, 5, 6, nil, nil, nil, 2, nil, 2 ]
199
217
 
200
218
  racc_goto_pointer = [
201
- nil, 1, 0, nil, nil, -2, -2 ]
219
+ nil, 1, -2, nil, nil, -4, -4 ]
202
220
 
203
221
  racc_goto_default = [
204
- nil, nil, nil, 5, 6, 7, 9 ]
222
+ nil, nil, nil, 6, 7, 8, 10 ]
205
223
 
206
224
  racc_reduce_table = [
207
225
  0, 0, :racc_error,
208
226
  3, 9, :_reduce_1,
209
227
  2, 9, :_reduce_2,
210
- 1, 9, :_reduce_none,
211
- 1, 10, :_reduce_4,
228
+ 1, 10, :_reduce_3,
229
+ 2, 10, :_reduce_4,
212
230
  2, 10, :_reduce_5,
213
- 2, 10, :_reduce_6,
214
- 2, 11, :_reduce_7,
215
- 1, 11, :_reduce_8,
216
- 2, 13, :_reduce_9,
217
- 2, 12, :_reduce_10,
218
- 1, 12, :_reduce_11,
219
- 2, 14, :_reduce_12 ]
231
+ 2, 11, :_reduce_6,
232
+ 1, 11, :_reduce_7,
233
+ 2, 13, :_reduce_8,
234
+ 2, 12, :_reduce_9,
235
+ 1, 12, :_reduce_10,
236
+ 2, 14, :_reduce_11 ]
220
237
 
221
- racc_reduce_n = 13
238
+ racc_reduce_n = 12
222
239
 
223
- racc_shift_n = 21
240
+ racc_shift_n = 20
224
241
 
225
242
  racc_token_table = {
226
243
  false => 0,
@@ -230,7 +247,7 @@ racc_token_table = {
230
247
  :VALUE => 4,
231
248
  :KEY => 5,
232
249
  :UNINDENT => 6,
233
- "-" => 7 }
250
+ :ITEM => 7 }
234
251
 
235
252
  racc_nt_base = 8
236
253
 
@@ -260,7 +277,7 @@ Racc_token_to_s_table = [
260
277
  "VALUE",
261
278
  "KEY",
262
279
  "UNINDENT",
263
- "\"-\"",
280
+ "ITEM",
264
281
  "$start",
265
282
  "document",
266
283
  "value",
@@ -289,11 +306,16 @@ module_eval(<<'.,.,', 'parser.ra', 10)
289
306
  end
290
307
  .,.,
291
308
 
292
- # reduce 3 omitted
309
+ module_eval(<<'.,.,', 'parser.ra', 12)
310
+ def _reduce_3(val, _values, result)
311
+ result = Scalar.new(val[0])
312
+ result
313
+ end
314
+ .,.,
293
315
 
294
316
  module_eval(<<'.,.,', 'parser.ra', 13)
295
317
  def _reduce_4(val, _values, result)
296
- result = Scalar.new(val[0])
318
+ result = val[0]
297
319
  result
298
320
  end
299
321
  .,.,
@@ -305,51 +327,44 @@ module_eval(<<'.,.,', 'parser.ra', 14)
305
327
  end
306
328
  .,.,
307
329
 
308
- module_eval(<<'.,.,', 'parser.ra', 15)
330
+ module_eval(<<'.,.,', 'parser.ra', 16)
309
331
  def _reduce_6(val, _values, result)
310
- result = val[0]
332
+ val[0].add_item(*val[1]); result = val[0]
311
333
  result
312
334
  end
313
335
  .,.,
314
336
 
315
337
  module_eval(<<'.,.,', 'parser.ra', 17)
316
338
  def _reduce_7(val, _values, result)
317
- val[0].add_item(*val[1]); result = val[0]
339
+ result = Dictionary.create(*val[0])
318
340
  result
319
341
  end
320
342
  .,.,
321
343
 
322
- module_eval(<<'.,.,', 'parser.ra', 18)
344
+ module_eval(<<'.,.,', 'parser.ra', 19)
323
345
  def _reduce_8(val, _values, result)
324
- result = Dictionary.create(*val[0])
346
+ result = [Scalar.new(val[0]), val[1]]
325
347
  result
326
348
  end
327
349
  .,.,
328
350
 
329
- module_eval(<<'.,.,', 'parser.ra', 20)
351
+ module_eval(<<'.,.,', 'parser.ra', 21)
330
352
  def _reduce_9(val, _values, result)
331
- result = [Scalar.new(val[0]), val[1]]
353
+ val[0].add_item(*val[1]); result = val[0]
332
354
  result
333
355
  end
334
356
  .,.,
335
357
 
336
358
  module_eval(<<'.,.,', 'parser.ra', 22)
337
359
  def _reduce_10(val, _values, result)
338
- val[0].add_item(*val[1]); result = val[0]
339
- result
340
- end
341
- .,.,
342
-
343
- module_eval(<<'.,.,', 'parser.ra', 23)
344
- def _reduce_11(val, _values, result)
345
360
  result = List.create(*val[0])
346
361
  result
347
362
  end
348
363
  .,.,
349
364
 
350
- module_eval(<<'.,.,', 'parser.ra', 25)
351
- def _reduce_12(val, _values, result)
352
- result = [Scalar.new(val[0]), val[1]]
365
+ module_eval(<<'.,.,', 'parser.ra', 24)
366
+ def _reduce_11(val, _values, result)
367
+ result = [Item.new(val[0]), val[1]]
353
368
  result
354
369
  end
355
370
  .,.,
@@ -3,12 +3,13 @@
3
3
  module Yaml
4
4
  module Sort
5
5
  class Scalar < Value
6
- attr_reader :value
6
+ attr_reader :value, :indent
7
7
 
8
8
  def initialize(value)
9
9
  super()
10
10
  @comment = value[:comment] || []
11
11
  @value = value[:value]
12
+ @indent = value[:indent] || ""
12
13
  end
13
14
 
14
15
  def <=>(other)
@@ -19,8 +20,12 @@ module Yaml
19
20
  end
20
21
  end
21
22
 
22
- def to_s
23
- super + value
23
+ def to_s(skip_first_indent: false)
24
+ if skip_first_indent
25
+ super + value
26
+ else
27
+ super + indent + value
28
+ end
24
29
  end
25
30
  end
26
31
  end
@@ -7,7 +7,11 @@ module Yaml
7
7
  @comment = []
8
8
  end
9
9
 
10
- def to_s
10
+ def to_s(*)
11
+ comments
12
+ end
13
+
14
+ def comments
11
15
  @comment.join
12
16
  end
13
17
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Yaml
4
4
  module Sort
5
- VERSION = "1.0.0"
5
+ VERSION = "2.0.1"
6
6
  end
7
7
  end
data/lib/yaml/sort.rb CHANGED
@@ -3,6 +3,7 @@
3
3
  require_relative "sort/parser"
4
4
  require_relative "sort/value"
5
5
  require_relative "sort/dictionary"
6
+ require_relative "sort/item"
6
7
  require_relative "sort/list"
7
8
  require_relative "sort/scalar"
8
9
  require_relative "sort/version"
data/yaml-sort.gemspec CHANGED
@@ -32,5 +32,6 @@ Gem::Specification.new do |spec|
32
32
  spec.add_dependency "cri"
33
33
 
34
34
  spec.add_development_dependency "aruba"
35
+ spec.add_development_dependency "github_changelog_generator"
35
36
  spec.add_development_dependency "racc"
36
37
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yaml-sort
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Romain Tartière
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-04-20 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: cri
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: github_changelog_generator
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: racc
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -72,6 +86,7 @@ files:
72
86
  - lib/yaml/sort.rb
73
87
  - lib/yaml/sort/cli.rb
74
88
  - lib/yaml/sort/dictionary.rb
89
+ - lib/yaml/sort/item.rb
75
90
  - lib/yaml/sort/list.rb
76
91
  - lib/yaml/sort/parser.rb
77
92
  - lib/yaml/sort/scalar.rb