yaml-sort 1.0.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -2
- data/lib/yaml/sort/dictionary.rb +5 -3
- data/lib/yaml/sort/item.rb +13 -0
- data/lib/yaml/sort/list.rb +3 -5
- data/lib/yaml/sort/parser.rb +10 -10
- data/lib/yaml/sort/scalar.rb +8 -3
- data/lib/yaml/sort/value.rb +5 -1
- data/lib/yaml/sort/version.rb +1 -1
- data/lib/yaml/sort.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a923ba44e82aa9eba2dbaa2ba2c4c30a6c775a5a6d0e2f447ec6e0682dc119df
|
4
|
+
data.tar.gz: 637f1efc9b2104818816ce37a62385a149c657d079ad50a6cb8337a9c56a7eee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04c75095cfe4fe25a42fdf0d0a4184a0324b1c64244ff3930d082e23f0efd393dbea5f4ea3f00f2364d48307ff37677b17348afa5f57ea367c525248ea3c4ecd
|
7
|
+
data.tar.gz: b6f2583c7170070daa6bd3dbc1067e280fc26c4bc88895158039a6e2ce5dc67177ef2210978bfbb332496a207070a61c4d2c56a5a4a2913ff6d9bf83f5d89293
|
data/CHANGELOG.md
CHANGED
@@ -3,9 +3,17 @@ 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
|
-
## [
|
6
|
+
## [2.0.0](https://github.com/smortex/yaml-sort/tree/2.0.0) (2022-04-25)
|
7
7
|
|
8
|
-
[Full Changelog](https://github.com/smortex/yaml-sort/compare/v1.0.
|
8
|
+
[Full Changelog](https://github.com/smortex/yaml-sort/compare/v1.0.1...2.0.0)
|
9
|
+
|
10
|
+
**Merged pull requests:**
|
11
|
+
|
12
|
+
- Rework list sorting [\#7](https://github.com/smortex/yaml-sort/pull/7) ([smortex](https://github.com/smortex))
|
13
|
+
|
14
|
+
## [v1.0.1](https://github.com/smortex/yaml-sort/tree/v1.0.1) (2022-04-24)
|
15
|
+
|
16
|
+
[Full Changelog](https://github.com/smortex/yaml-sort/compare/v1.0.0...v1.0.1)
|
9
17
|
|
10
18
|
**Fixed bugs:**
|
11
19
|
|
data/lib/yaml/sort/dictionary.rb
CHANGED
@@ -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
|
data/lib/yaml/sort/list.rb
CHANGED
@@ -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
|
-
|
31
|
-
|
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
|
data/lib/yaml/sort/parser.rb
CHANGED
@@ -78,10 +78,10 @@ def scan(text)
|
|
78
78
|
when s.scan(/\n[[:blank:]]*#.*/) then emit(:COMMENT, s.matched)
|
79
79
|
when s.scan(/\n([[:blank:]]*-) */) then emit(:ITEM, s.matched, indent: s.captures[0])
|
80
80
|
when s.scan(/\n[[:blank:]]*\.\.\./) then emit(:END_OF_DOCUMENT, s.matched)
|
81
|
-
when s.scan(/\n?([[:blank:]]*)([^[[:space:]]\n]
|
81
|
+
when s.scan(/\n?([[:blank:]]*)([^[[:space:]]\n]+:)(?=[ \n])/)
|
82
82
|
indent = s.captures[0]
|
83
83
|
indent = last_indent_value + indent + " " unless s.matched.start_with?("\n")
|
84
|
-
emit(:KEY, s.matched, indent: indent)
|
84
|
+
emit(:KEY, s.matched, indent: indent, value: s.captures[1])
|
85
85
|
|
86
86
|
when s.scan(/\n\z/)
|
87
87
|
# Done
|
@@ -110,16 +110,16 @@ def scan(text)
|
|
110
110
|
@tokens
|
111
111
|
end
|
112
112
|
|
113
|
-
def emit(token,
|
113
|
+
def emit(token, match, length: nil, indent: nil, value: nil)
|
114
114
|
indent.gsub!("-", " ") if indent
|
115
115
|
if token && length.nil?
|
116
|
-
raise "length must be explicitly passed when
|
117
|
-
length =
|
116
|
+
raise "length must be explicitly passed when match is not a String (#{match.class.name})" unless match.is_a?(String)
|
117
|
+
length = match.length
|
118
118
|
end
|
119
119
|
|
120
|
-
if
|
120
|
+
if match.start_with?("\n")
|
121
121
|
@lineno += 1
|
122
|
-
|
122
|
+
match = match[1..-1]
|
123
123
|
length -= 1
|
124
124
|
@position = 0
|
125
125
|
end
|
@@ -130,7 +130,7 @@ def emit(token, value, length: nil, indent: nil)
|
|
130
130
|
end
|
131
131
|
|
132
132
|
exvalue = {
|
133
|
-
value: value,
|
133
|
+
value: value || match,
|
134
134
|
lineno: @lineno,
|
135
135
|
position: @position,
|
136
136
|
length: length,
|
@@ -138,7 +138,7 @@ def emit(token, value, length: nil, indent: nil)
|
|
138
138
|
}
|
139
139
|
@tokens << [token, exvalue]
|
140
140
|
|
141
|
-
@lineno +=
|
141
|
+
@lineno += match.count("\n")
|
142
142
|
|
143
143
|
@position += length
|
144
144
|
end
|
@@ -351,7 +351,7 @@ module_eval(<<'.,.,', 'parser.ra', 22)
|
|
351
351
|
|
352
352
|
module_eval(<<'.,.,', 'parser.ra', 24)
|
353
353
|
def _reduce_11(val, _values, result)
|
354
|
-
result = [
|
354
|
+
result = [Item.new(val[0]), val[1]]
|
355
355
|
result
|
356
356
|
end
|
357
357
|
.,.,
|
data/lib/yaml/sort/scalar.rb
CHANGED
@@ -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
|
-
|
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
|
data/lib/yaml/sort/value.rb
CHANGED
data/lib/yaml/sort/version.rb
CHANGED
data/lib/yaml/sort.rb
CHANGED
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:
|
4
|
+
version: 2.0.0
|
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-
|
11
|
+
date: 2022-04-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cri
|
@@ -86,6 +86,7 @@ files:
|
|
86
86
|
- lib/yaml/sort.rb
|
87
87
|
- lib/yaml/sort/cli.rb
|
88
88
|
- lib/yaml/sort/dictionary.rb
|
89
|
+
- lib/yaml/sort/item.rb
|
89
90
|
- lib/yaml/sort/list.rb
|
90
91
|
- lib/yaml/sort/parser.rb
|
91
92
|
- lib/yaml/sort/scalar.rb
|