psych-comments 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/lib/psych/comments/emitter.rb +36 -19
- data/lib/psych/comments/parsing.rb +18 -1
- data/lib/psych/comments/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 818bc094529602b346feec2de45c209a97846747142399a673984b27cf311153
|
4
|
+
data.tar.gz: c20108df72182dbe158485de105ab764c5e6f6e5f6bc9f0fe714d3fb8bdd717a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c21f780021ef4b2f86ef7c090624c8d06f252922ce6539998edb5768b310536aa412c61a6d8e33370f58401560bbca92d8006dfc7ee3ca80d3efb398598e1370
|
7
|
+
data.tar.gz: 77fd723a8d83a8a8071ea87e60548efa88be32f5c88cb242c52548df56950e8c3ba0a29fccfd0e5c7b7ff29c4be8ca8d39b492f0d0cbed3f24e506fc8adfeb98
|
data/CHANGELOG.md
CHANGED
@@ -16,7 +16,7 @@ module Psych
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
-
module_function def stringify_adjust_scalar(node,
|
19
|
+
module_function def stringify_adjust_scalar(node, indent_str = 0)
|
20
20
|
node2 = Psych::Nodes::Scalar.new(node.value, nil, nil, node.plain, node.quoted, node.style)
|
21
21
|
if node.tag
|
22
22
|
if node.style == Psych::Nodes::Scalar::PLAIN
|
@@ -30,7 +30,7 @@ module Psych
|
|
30
30
|
if node.style == Psych::Nodes::Scalar::DOUBLE_QUOTED || node.style == Psych::Nodes::Scalar::SINGLE_QUOTED || node.style == Psych::Nodes::Scalar::PLAIN
|
31
31
|
s = s.gsub(/\s*\n\s*/, " ")
|
32
32
|
else
|
33
|
-
s = s.gsub(/\n/, "\n#{
|
33
|
+
s = s.gsub(/\n/, "\n#{indent_str}")
|
34
34
|
end
|
35
35
|
s.gsub(/\n\s+$/, "\n")
|
36
36
|
end
|
@@ -108,8 +108,7 @@ module Psych
|
|
108
108
|
@comment_lookahead.shift
|
109
109
|
else
|
110
110
|
node.leading_comments.each do |comment|
|
111
|
-
|
112
|
-
newline!
|
111
|
+
emit_comment(comment)
|
113
112
|
end
|
114
113
|
end
|
115
114
|
if has_anchor(node)
|
@@ -130,7 +129,7 @@ module Psych
|
|
130
129
|
if node.is_a?(Psych::Nodes::Alias)
|
131
130
|
print "*#{node.anchor}"
|
132
131
|
else
|
133
|
-
print stringify_adjust_scalar(node, @indent)
|
132
|
+
print stringify_adjust_scalar(node, INDENT * @indent)
|
134
133
|
end
|
135
134
|
when Psych::Nodes::Mapping
|
136
135
|
set_flow(flow?(node)) do
|
@@ -155,14 +154,12 @@ module Psych
|
|
155
154
|
emit(key)
|
156
155
|
print ":"
|
157
156
|
space!
|
158
|
-
if single_line(value)
|
159
|
-
emit(value)
|
160
|
-
elsif has_bullet(value)
|
157
|
+
if single_line?(value) || has_bullet(value)
|
161
158
|
emit(value)
|
162
159
|
else
|
163
|
-
|
164
|
-
|
165
|
-
|
160
|
+
indented do
|
161
|
+
emit(value)
|
162
|
+
end
|
166
163
|
end
|
167
164
|
newline!
|
168
165
|
end
|
@@ -188,8 +185,12 @@ module Psych
|
|
188
185
|
emit_lookahead_comments(subnode) unless @flow
|
189
186
|
print "- "
|
190
187
|
@state = :pseudo_indent
|
191
|
-
|
188
|
+
if single_line?(subnode)
|
192
189
|
emit(subnode)
|
190
|
+
else
|
191
|
+
indented do
|
192
|
+
emit(subnode)
|
193
|
+
end
|
193
194
|
end
|
194
195
|
newline!
|
195
196
|
end
|
@@ -204,7 +205,7 @@ module Psych
|
|
204
205
|
unless node.implicit
|
205
206
|
newline!
|
206
207
|
print "---"
|
207
|
-
|
208
|
+
space!
|
208
209
|
end
|
209
210
|
set_tagmap(node) do
|
210
211
|
emit(node.root)
|
@@ -212,8 +213,8 @@ module Psych
|
|
212
213
|
unless node.implicit_end
|
213
214
|
newline!
|
214
215
|
print "..."
|
215
|
-
newline!
|
216
216
|
end
|
217
|
+
newline!
|
217
218
|
when Psych::Nodes::Stream
|
218
219
|
node.children.each do |subnode|
|
219
220
|
emit(subnode)
|
@@ -221,18 +222,26 @@ module Psych
|
|
221
222
|
else
|
222
223
|
raise TypeError, node
|
223
224
|
end
|
225
|
+
node.trailing_comments.each do |comment|
|
226
|
+
emit_comment(comment)
|
227
|
+
end
|
224
228
|
end
|
225
229
|
|
226
230
|
def emit_lookahead_comments(node)
|
231
|
+
return if node.equal?(@comment_lookahead[0])
|
232
|
+
|
227
233
|
node.leading_comments.each do |comment|
|
228
|
-
|
229
|
-
newline!
|
234
|
+
emit_comment(comment)
|
230
235
|
end
|
231
236
|
@comment_lookahead.push(node)
|
232
|
-
|
233
|
-
|
234
|
-
|
237
|
+
end
|
238
|
+
|
239
|
+
def emit_comment(comment)
|
240
|
+
unless /\A#[^\r\n]*\z/.match?(comment)
|
241
|
+
raise ArgumentError, "Invalid comment: #{comment.inspect}"
|
235
242
|
end
|
243
|
+
print comment
|
244
|
+
newline!
|
236
245
|
end
|
237
246
|
|
238
247
|
def indented(&block)
|
@@ -253,12 +262,20 @@ module Psych
|
|
253
262
|
end
|
254
263
|
end
|
255
264
|
|
265
|
+
def single_line?(node)
|
266
|
+
flow?(node) && node.leading_comments.empty? && node.trailing_comments.empty?
|
267
|
+
end
|
268
|
+
|
256
269
|
def flow?(node)
|
257
270
|
case node
|
271
|
+
when Psych::Nodes::Scalar, Psych::Nodes::Alias
|
272
|
+
true
|
258
273
|
when Psych::Nodes::Mapping
|
259
274
|
@flow || node.style == Psych::Nodes::Mapping::FLOW || node.children.empty?
|
260
275
|
when Psych::Nodes::Sequence
|
261
276
|
@flow || node.style == Psych::Nodes::Sequence::FLOW || node.children.empty?
|
277
|
+
else
|
278
|
+
false
|
262
279
|
end
|
263
280
|
end
|
264
281
|
|
@@ -4,6 +4,7 @@ module Psych
|
|
4
4
|
def initialize(text)
|
5
5
|
@lines = text.lines.to_a
|
6
6
|
@last = [0, 0]
|
7
|
+
@bullet_owner = nil
|
7
8
|
end
|
8
9
|
|
9
10
|
def sublines(sl, sc, el, ec)
|
@@ -25,7 +26,20 @@ module Psych
|
|
25
26
|
def read_comments(line, column)
|
26
27
|
s = sublines(*@last, line, column)
|
27
28
|
@last = [line, column]
|
28
|
-
|
29
|
+
comments = []
|
30
|
+
s.scan(/-|#.*?$/) do |token|
|
31
|
+
case token
|
32
|
+
when "-"
|
33
|
+
if @bullet_owner
|
34
|
+
@bullet_owner.leading_comments.push(*comments)
|
35
|
+
comments = []
|
36
|
+
end
|
37
|
+
else
|
38
|
+
comments << token
|
39
|
+
end
|
40
|
+
end
|
41
|
+
@bullet_owner = nil
|
42
|
+
comments
|
29
43
|
end
|
30
44
|
|
31
45
|
def visit(node)
|
@@ -35,8 +49,11 @@ module Psych
|
|
35
49
|
@last = [node.end_line, node.end_column]
|
36
50
|
when Psych::Nodes::Sequence, Psych::Nodes::Mapping
|
37
51
|
has_delim = /[\[{]/.match?(char_at(node.start_line, node.start_column))
|
52
|
+
has_bullet = node.is_a?(Psych::Nodes::Sequence) && !has_delim
|
53
|
+
# Special-case on `- #foo\n bar: baz`
|
38
54
|
node.leading_comments.push(*read_comments(node.start_line, node.start_column)) if has_delim
|
39
55
|
node.children.each do |subnode|
|
56
|
+
@bullet_owner = subnode if has_bullet
|
40
57
|
visit(subnode)
|
41
58
|
end
|
42
59
|
if has_delim
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: psych-comments
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Masaki Hara
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-08-
|
11
|
+
date: 2022-08-25 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Brings comment-aware YAML parsing to Psych
|
14
14
|
email:
|