yaml-sort 2.2.0 → 2.2.2

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: 6c27eb85cd2257c1d9ae801f0de2bcf360f4980e40479599745ecea41f4aa1f0
4
- data.tar.gz: 05a1eb6551c2c671ca4e1ff01ce6acd91f3954fd7eeb8b70238bb48df45c1365
3
+ metadata.gz: 8fc2f27d56aec98cd2639b6751d584ef595133831e237de2424f9d4f4fef8495
4
+ data.tar.gz: 89e5a82b06b5458c5592c65e28b97916b6a357203e65ac058b5bc167423dba3c
5
5
  SHA512:
6
- metadata.gz: 28b1e39e69330c1d4f4f68884fb84a8ba8dcc5411315a4b37e51391a4f32b1495fbb2f90eeaa78fea283e1c1ed06f0d030f35c9642de578e4e2665d76546a8ed
7
- data.tar.gz: '0218e2f44f0a27dc1d5ca720493be401f2e9e55276b4de733ca37f716e9b92cc1c963a0c716c34f219fe3efc6704e21df570564f356394253bc790ecc7c9644f'
6
+ metadata.gz: e1bd41a83d2ddade59a115f681cb832d0761a7cc27deee193fb8c3aa711137508e288ce4fd736019e161184cf1257160d04b7088f51a4931c695fd9a5ec67ee3
7
+ data.tar.gz: 3d5f6d8359d14e62735bf7981a3c670c3156649ec4892f6eb6b4ef4c7019998f4940804795a34f5fad99f0fedd960a245af94fbb274d90fa5532e28da5370650
data/CHANGELOG.md CHANGED
@@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file.
3
3
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
4
4
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
5
5
 
6
+ ## [v2.2.2](https://github.com/smortex/yaml-sort/tree/v2.2.2) (2023-01-06)
7
+
8
+ [Full Changelog](https://github.com/smortex/yaml-sort/compare/v2.2.1...v2.2.2)
9
+
10
+ **Fixed bugs:**
11
+
12
+ - Fix parsing of "simple" multi-line VALUE [\#24](https://github.com/smortex/yaml-sort/pull/24) ([smortex](https://github.com/smortex))
13
+
14
+ ## [v2.2.1](https://github.com/smortex/yaml-sort/tree/v2.2.1) (2023-01-04)
15
+
16
+ [Full Changelog](https://github.com/smortex/yaml-sort/compare/v2.2.0...v2.2.1)
17
+
18
+ **Fixed bugs:**
19
+
20
+ - Fix parsing of dictionaries with quotes in KEY/VALUE [\#21](https://github.com/smortex/yaml-sort/pull/21) ([smortex](https://github.com/smortex))
21
+
6
22
  ## [v2.2.0](https://github.com/smortex/yaml-sort/tree/v2.2.0) (2022-09-27)
7
23
 
8
24
  [Full Changelog](https://github.com/smortex/yaml-sort/compare/v2.1.1...v2.2.0)
@@ -13,7 +13,7 @@ module Yaml
13
13
  module Sort
14
14
  class Parser < Racc::Parser
15
15
 
16
- module_eval(<<'...end parser.ra/module_eval...', 'parser.ra', 33)
16
+ module_eval(<<'...end parser.ra/module_eval...', 'parser.ra', 36)
17
17
 
18
18
  def scan(text)
19
19
  text = "---\n#{text}" unless text.start_with?("---\n")
@@ -27,11 +27,16 @@ def scan(text)
27
27
  @fakelineno = 0
28
28
  @position = 0
29
29
  @indent_stack = []
30
+ @anchors = {}
30
31
 
31
32
  until s.eos?
32
33
  if scan_value
33
34
  @position += s.matched_size if s.scan(/[[:blank:]]*/)
34
35
  case
36
+ when s.scan(/&[[:alnum:]]+/)
37
+ emit(:ANCHOR, s.matched[1..-1])
38
+ when s.scan(/\*[[:alnum:]]+/)
39
+ emit(:ALIAS, s.matched[1..-1])
35
40
  when s.scan(/[|>][-+]?(?=\n)/)
36
41
  match = s.matched
37
42
 
@@ -58,10 +63,11 @@ def scan(text)
58
63
  match += s.scan(/'/)
59
64
  end
60
65
  emit(:VALUE, match)
61
- when s.scan(/\S+/)
62
- match = s.matched
63
- until s.match?(/[\n]/) || s.eos?
64
- match += s.scan(/[^\n]+/)
66
+ when s.match?(/\S+/)
67
+ match = s.scan_until(/$/)
68
+
69
+ while s.match?("\n" + last_indent_value + " ")
70
+ match += s.scan(/\n[^\n]+(?=\n)/)
65
71
  end
66
72
  emit(:VALUE, match)
67
73
  end
@@ -77,10 +83,11 @@ def scan(text)
77
83
  when s.scan(/\n[[:blank:]]*#.*/) then emit(:COMMENT, s.matched)
78
84
  when s.scan(/\n([[:blank:]]*-) */) then emit(:ITEM, s.matched, indent: s.captures[0])
79
85
  when s.scan(/\n[[:blank:]]*\.\.\./) then emit(:END_OF_DOCUMENT, s.matched)
80
- when s.scan(/\n?([[:blank:]]*)(.+:)(?=[ \n])/)
86
+ when s.scan(/\n?([[:blank:]]*)(.+?:)(?=[ \n])/)
81
87
  indent = s.captures[0]
82
88
  indent = last_indent_value + indent + " " unless s.matched.start_with?("\n")
83
89
  emit(:KEY, s.matched, indent: indent, value: s.captures[1])
90
+ scan_value = true if s.rest
84
91
 
85
92
  when s.scan(/\n\z/)
86
93
  # Done
@@ -141,8 +148,19 @@ def emit(token, match, length: nil, indent: nil, value: nil)
141
148
  @indent_stack.push(indent) unless @indent_stack.last == indent
142
149
  end
143
150
 
151
+ value ||= match
152
+
153
+ if token == :KEY && value == '<<:'
154
+ message = <<~MESSAGE
155
+ #{@filename}:#{@lineno}: '<<:' references are not sortable:
156
+ #{@lines[@lineno - 1].chomp}
157
+ #{indent}#{" " * @position}^#{"~" * (length - indent.length - 1)}
158
+ MESSAGE
159
+ raise(Racc::ParseError, message)
160
+ end
161
+
144
162
  exvalue = {
145
- value: value || match,
163
+ value: value,
146
164
  lineno: @lineno,
147
165
  position: @position,
148
166
  length: length,
@@ -193,50 +211,61 @@ end
193
211
  ##### State transition tables begin ###
194
212
 
195
213
  racc_action_table = [
196
- 5, 9, 2, 11, 5, 9, 3, 11, 5, 9,
197
- 12, 11, 9, 14, 16, 11, 13 ]
214
+ 5, 10, 2, 12, 3, 8, 5, 10, 13, 12,
215
+ 19, 8, 5, 10, 14, 12, 21, 8, 5, 10,
216
+ nil, 12, nil, 8, 5, 10, nil, 12, nil, 8,
217
+ 10, 15, 17, 12 ]
198
218
 
199
219
  racc_action_check = [
200
- 2, 2, 0, 2, 9, 9, 1, 9, 11, 11,
201
- 3, 11, 6, 6, 7, 7, 4 ]
220
+ 2, 2, 0, 2, 1, 2, 10, 10, 3, 10,
221
+ 10, 10, 12, 12, 4, 12, 12, 12, 19, 19,
222
+ nil, 19, nil, 19, 21, 21, nil, 21, nil, 21,
223
+ 6, 6, 7, 7 ]
202
224
 
203
225
  racc_action_pointer = [
204
- 0, 6, -4, 10, 13, nil, 7, 8, nil, 0,
205
- nil, 4, nil, nil, nil, nil, nil, nil, nil, nil ]
226
+ 0, 4, -4, 8, 11, nil, 25, 26, nil, nil,
227
+ 2, nil, 8, nil, nil, nil, nil, nil, nil, 14,
228
+ nil, 20, nil, nil, nil ]
206
229
 
207
230
  racc_action_default = [
208
- -12, -12, -12, -12, -2, -3, -12, -12, -7, -12,
209
- -10, -12, 20, -1, -4, -6, -5, -9, -8, -11 ]
231
+ -15, -15, -15, -15, -2, -3, -15, -15, -6, -8,
232
+ -15, -12, -15, 25, -1, -4, -7, -5, -11, -15,
233
+ -10, -15, -14, -9, -13 ]
210
234
 
211
235
  racc_goto_table = [
212
- 4, 1, 15, 17, nil, nil, nil, 18, nil, 19 ]
236
+ 4, 1, 16, 18, nil, nil, nil, nil, 20, nil,
237
+ 22, nil, nil, nil, nil, nil, nil, 23, nil, 24 ]
213
238
 
214
239
  racc_goto_check = [
215
- 2, 1, 5, 6, nil, nil, nil, 2, nil, 2 ]
240
+ 2, 1, 5, 6, nil, nil, nil, nil, 2, nil,
241
+ 2, nil, nil, nil, nil, nil, nil, 2, nil, 2 ]
216
242
 
217
243
  racc_goto_pointer = [
218
244
  nil, 1, -2, nil, nil, -4, -4 ]
219
245
 
220
246
  racc_goto_default = [
221
- nil, nil, nil, 6, 7, 8, 10 ]
247
+ nil, nil, nil, 6, 7, 9, 11 ]
222
248
 
223
249
  racc_reduce_table = [
224
250
  0, 0, :racc_error,
225
- 3, 9, :_reduce_1,
226
- 2, 9, :_reduce_2,
227
- 1, 10, :_reduce_3,
228
- 2, 10, :_reduce_4,
229
- 2, 10, :_reduce_5,
230
- 2, 11, :_reduce_6,
231
- 1, 11, :_reduce_7,
232
- 2, 13, :_reduce_8,
233
- 2, 12, :_reduce_9,
234
- 1, 12, :_reduce_10,
235
- 2, 14, :_reduce_11 ]
236
-
237
- racc_reduce_n = 12
238
-
239
- racc_shift_n = 20
251
+ 3, 11, :_reduce_1,
252
+ 2, 11, :_reduce_2,
253
+ 1, 12, :_reduce_3,
254
+ 2, 12, :_reduce_4,
255
+ 2, 12, :_reduce_5,
256
+ 1, 12, :_reduce_6,
257
+ 2, 13, :_reduce_7,
258
+ 1, 13, :_reduce_8,
259
+ 3, 15, :_reduce_9,
260
+ 2, 15, :_reduce_10,
261
+ 2, 14, :_reduce_11,
262
+ 1, 14, :_reduce_12,
263
+ 3, 16, :_reduce_13,
264
+ 2, 16, :_reduce_14 ]
265
+
266
+ racc_reduce_n = 15
267
+
268
+ racc_shift_n = 25
240
269
 
241
270
  racc_token_table = {
242
271
  false => 0,
@@ -246,9 +275,11 @@ racc_token_table = {
246
275
  :VALUE => 4,
247
276
  :KEY => 5,
248
277
  :UNINDENT => 6,
249
- :ITEM => 7 }
278
+ :ITEM => 7,
279
+ :ANCHOR => 8,
280
+ :ALIAS => 9 }
250
281
 
251
- racc_nt_base = 8
282
+ racc_nt_base = 10
252
283
 
253
284
  racc_use_result_var = true
254
285
 
@@ -277,6 +308,8 @@ Racc_token_to_s_table = [
277
308
  "KEY",
278
309
  "UNINDENT",
279
310
  "ITEM",
311
+ "ANCHOR",
312
+ "ALIAS",
280
313
  "$start",
281
314
  "document",
282
315
  "value",
@@ -326,43 +359,64 @@ module_eval(<<'.,.,', 'parser.ra', 14)
326
359
  end
327
360
  .,.,
328
361
 
329
- module_eval(<<'.,.,', 'parser.ra', 16)
362
+ module_eval(<<'.,.,', 'parser.ra', 15)
330
363
  def _reduce_6(val, _values, result)
331
- val[0].add_item(*val[1]); result = val[0]
364
+ result = Alias.new(@anchors, val[0])
332
365
  result
333
366
  end
334
367
  .,.,
335
368
 
336
369
  module_eval(<<'.,.,', 'parser.ra', 17)
337
370
  def _reduce_7(val, _values, result)
338
- result = Dictionary.create(*val[0])
371
+ val[0].add_item(*val[1]); result = val[0]
339
372
  result
340
373
  end
341
374
  .,.,
342
375
 
343
- module_eval(<<'.,.,', 'parser.ra', 19)
376
+ module_eval(<<'.,.,', 'parser.ra', 18)
344
377
  def _reduce_8(val, _values, result)
345
- result = [Scalar.new(val[0]), val[1]]
378
+ result = Dictionary.create(*val[0])
346
379
  result
347
380
  end
348
381
  .,.,
349
382
 
350
- module_eval(<<'.,.,', 'parser.ra', 21)
383
+ module_eval(<<'.,.,', 'parser.ra', 20)
351
384
  def _reduce_9(val, _values, result)
352
- val[0].add_item(*val[1]); result = val[0]
385
+ @anchors[val[1][:value]] = val[2]; result = [Scalar.new(val[0]), Alias.new(@anchors, val[1])]
353
386
  result
354
387
  end
355
388
  .,.,
356
389
 
357
- module_eval(<<'.,.,', 'parser.ra', 22)
390
+ module_eval(<<'.,.,', 'parser.ra', 21)
358
391
  def _reduce_10(val, _values, result)
359
- result = List.create(*val[0])
392
+ result = [Scalar.new(val[0]), val[1]]
360
393
  result
361
394
  end
362
395
  .,.,
363
396
 
364
- module_eval(<<'.,.,', 'parser.ra', 24)
397
+ module_eval(<<'.,.,', 'parser.ra', 23)
365
398
  def _reduce_11(val, _values, result)
399
+ val[0].add_item(*val[1]); result = val[0]
400
+ result
401
+ end
402
+ .,.,
403
+
404
+ module_eval(<<'.,.,', 'parser.ra', 24)
405
+ def _reduce_12(val, _values, result)
406
+ result = List.create(*val[0])
407
+ result
408
+ end
409
+ .,.,
410
+
411
+ module_eval(<<'.,.,', 'parser.ra', 26)
412
+ def _reduce_13(val, _values, result)
413
+ @anchors[val[1][:value]] = val[2]; result = [Item.new(val[0]), Alias.new(@anchors, val[1])]
414
+ result
415
+ end
416
+ .,.,
417
+
418
+ module_eval(<<'.,.,', 'parser.ra', 27)
419
+ def _reduce_14(val, _values, result)
366
420
  result = [Item.new(val[0]), val[1]]
367
421
  result
368
422
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Yaml
4
4
  module Sort
5
- VERSION = "2.2.0"
5
+ VERSION = "2.2.2"
6
6
  end
7
7
  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: 2.2.0
4
+ version: 2.2.2
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-09-27 00:00:00.000000000 Z
11
+ date: 2023-01-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cri
@@ -121,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
121
  - !ruby/object:Gem::Version
122
122
  version: '0'
123
123
  requirements: []
124
- rubygems_version: 3.3.22
124
+ rubygems_version: 3.3.26
125
125
  signing_key:
126
126
  specification_version: 4
127
127
  summary: Sort lines in YAML files in a predictable order