w_syntax_tree-erb 0.9.0 → 0.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -4
- data/Gemfile.lock +3 -3
- data/README.md +2 -0
- data/lib/syntax_tree/erb/format.rb +35 -26
- data/lib/syntax_tree/erb/nodes.rb +13 -2
- data/lib/syntax_tree/erb/pretty_print.rb +3 -3
- data/lib/syntax_tree/erb/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: bc192c98db6bb573305fc6bfec6cbf35415eb53376ddb19a977e95f0d0812453
|
4
|
+
data.tar.gz: 20c52afb0c5650fcb0ed0cfac5ad259e852a958ee1480d6c201d465e2dca2f33
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4037694cab3fb721931d23d6b71b6702c8317a8cfcc02385f5ffead99b12b05928a449cf61f2d5ccd56fde08a42c1a3eab5bce933930e5af7758334c078a2e6c
|
7
|
+
data.tar.gz: fac163a673ebf3f60900162cd63f3f6cc7d5f227ecb7098d72a769a9156d031a7f579b1237e5fa63fc50d8a5672c487f433d6e2b940fc39a002c28cb055ee26f
|
data/CHANGELOG.md
CHANGED
@@ -6,11 +6,17 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
|
|
6
6
|
|
7
7
|
## [Unreleased]
|
8
8
|
|
9
|
-
## [0.
|
9
|
+
## [0.9.1] - 2023-06-28
|
10
|
+
|
11
|
+
- Handle formatting of multi-line ERB-tags with more than one statement.
|
12
|
+
|
13
|
+
## [0.9.0] - 2023-06-22
|
10
14
|
|
11
15
|
### Added
|
12
16
|
|
13
|
-
- 🎉 First version based on syntax_tree-xml
|
17
|
+
- 🎉 First version based on syntax_tree-xml 🎉.
|
18
|
+
- Can format a lot of .html.erb-syntax and works as a plugin to syntax_tree.
|
19
|
+
- This is still early and there are a lot of different weird syntaxes out there.
|
14
20
|
|
15
|
-
[unreleased]: https://github.com/davidwessman/syntax_tree-erb/compare/v0.
|
16
|
-
[0.0
|
21
|
+
[unreleased]: https://github.com/davidwessman/syntax_tree-erb/compare/v0.9.0...HEAD
|
22
|
+
[0.9.0]: https://github.com/davidwessman/syntax_tree-erb/compare/419727a73af94057ca0980733e69ac8b4d52fdf4...v0.9.0
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
|
4
|
+
w_syntax_tree-erb (0.9.1)
|
5
5
|
prettier_print (>= 1.2.0)
|
6
6
|
syntax_tree (>= 6.1.1)
|
7
7
|
|
@@ -9,7 +9,7 @@ GEM
|
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
11
|
docile (1.4.0)
|
12
|
-
minitest (5.18.
|
12
|
+
minitest (5.18.1)
|
13
13
|
prettier_print (1.2.1)
|
14
14
|
rake (13.0.6)
|
15
15
|
simplecov (0.22.0)
|
@@ -32,7 +32,7 @@ DEPENDENCIES
|
|
32
32
|
minitest
|
33
33
|
rake
|
34
34
|
simplecov
|
35
|
-
|
35
|
+
w_syntax_tree-erb!
|
36
36
|
|
37
37
|
BUNDLED WITH
|
38
38
|
2.4.1
|
data/README.md
CHANGED
@@ -80,8 +80,7 @@ module SyntaxTree
|
|
80
80
|
q.text(" ")
|
81
81
|
visit(node.keyword)
|
82
82
|
end
|
83
|
-
|
84
|
-
visit(node.content)
|
83
|
+
node.content.nil? ? q.text(" ") : visit(node.content)
|
85
84
|
|
86
85
|
visit(node.closing_tag)
|
87
86
|
end
|
@@ -104,29 +103,44 @@ module SyntaxTree
|
|
104
103
|
end
|
105
104
|
|
106
105
|
def visit_erb_content(node)
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
formatter =
|
112
|
-
SyntaxTree::Formatter.new("", [], erb_print_width(node.value))
|
113
|
-
formatter.format(node.value.statements)
|
114
|
-
formatter.flush
|
115
|
-
formatter.output.join.split("\n")
|
116
|
-
end
|
106
|
+
if node.value.is_a?(String)
|
107
|
+
output_rows(node.value.split("\n"))
|
108
|
+
else
|
109
|
+
child_nodes = node.value&.statements&.child_nodes || []
|
117
110
|
|
118
|
-
|
119
|
-
q.group do
|
111
|
+
if child_nodes.size == 1
|
120
112
|
q.text(" ")
|
121
|
-
q.seplist(
|
113
|
+
q.seplist(child_nodes, -> { q.breakable("") }) do |child_node|
|
114
|
+
format_statement(child_node)
|
115
|
+
end
|
122
116
|
q.text(" ")
|
117
|
+
elsif child_nodes.size > 1
|
118
|
+
q.indent do
|
119
|
+
q.breakable("")
|
120
|
+
q.seplist(child_nodes, -> { q.breakable("") }) do |child_node|
|
121
|
+
format_statement(child_node)
|
122
|
+
end
|
123
|
+
end
|
124
|
+
q.breakable
|
123
125
|
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
def format_statement(statement)
|
130
|
+
formatter =
|
131
|
+
SyntaxTree::Formatter.new("", [], erb_print_width(statement))
|
132
|
+
formatter.format(statement)
|
133
|
+
formatter.flush
|
134
|
+
rows = formatter.output.join.split("\n")
|
135
|
+
|
136
|
+
output_rows(formatter.output.join.split("\n"))
|
137
|
+
end
|
138
|
+
|
139
|
+
def output_rows(rows)
|
140
|
+
if rows.size > 1
|
141
|
+
q.seplist(rows, -> { q.breakable("") }) { |row| q.text(row) }
|
124
142
|
elsif rows.size == 1
|
125
|
-
q.text(" ")
|
126
143
|
q.text(rows.first)
|
127
|
-
q.text(" ")
|
128
|
-
else
|
129
|
-
q.text(" ")
|
130
144
|
end
|
131
145
|
end
|
132
146
|
|
@@ -203,15 +217,10 @@ module SyntaxTree
|
|
203
217
|
end
|
204
218
|
end
|
205
219
|
|
206
|
-
def erb_print_width(
|
207
|
-
statements = syntax_tree.statements.body
|
220
|
+
def erb_print_width(node)
|
208
221
|
# Set the width to maximum if we have an IfNode or IfOp,
|
209
222
|
# we cannot format them purely with SyntaxTree because the ERB-syntax will be unparseable.
|
210
|
-
|
211
|
-
999_999
|
212
|
-
else
|
213
|
-
SyntaxTree::ERB::MAX_WIDTH
|
214
|
-
end
|
223
|
+
check_for_if_statement(node) ? 999_999 : SyntaxTree::ERB::MAX_WIDTH
|
215
224
|
end
|
216
225
|
|
217
226
|
def check_for_if_statement(node)
|
@@ -220,8 +220,19 @@ module SyntaxTree
|
|
220
220
|
|
221
221
|
def initialize(opening_tag:, keyword:, content:, closing_tag:, location:)
|
222
222
|
@opening_tag = opening_tag
|
223
|
-
|
224
|
-
@
|
223
|
+
# prune whitespace from keyword
|
224
|
+
@keyword =
|
225
|
+
if keyword
|
226
|
+
Token.new(
|
227
|
+
type: keyword.type,
|
228
|
+
value: keyword.value.strip,
|
229
|
+
location: keyword.location
|
230
|
+
)
|
231
|
+
end
|
232
|
+
# Set content to nil if it is empty
|
233
|
+
content ||= []
|
234
|
+
content = content.map(&:value).join if content.is_a?(Array)
|
235
|
+
@content = ErbContent.new(value: content) unless content.strip.empty?
|
225
236
|
@closing_tag = closing_tag
|
226
237
|
@location = location
|
227
238
|
end
|
@@ -108,12 +108,12 @@ module SyntaxTree
|
|
108
108
|
end
|
109
109
|
|
110
110
|
def visit_erb_end(node)
|
111
|
-
q.
|
111
|
+
q.pp("erb_end")
|
112
112
|
end
|
113
113
|
|
114
114
|
# Visit an ErbContent node.
|
115
115
|
def visit_erb_content(node)
|
116
|
-
q.
|
116
|
+
q.pp(node.value)
|
117
117
|
end
|
118
118
|
|
119
119
|
# Visit an Attribute node.
|
@@ -132,7 +132,7 @@ module SyntaxTree
|
|
132
132
|
end
|
133
133
|
|
134
134
|
def visit_erb_close(node)
|
135
|
-
|
135
|
+
visit(node.closing)
|
136
136
|
end
|
137
137
|
|
138
138
|
def visit_erb_do_close(node)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: w_syntax_tree-erb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin Newton
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-06-
|
12
|
+
date: 2023-06-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: prettier_print
|