syntax_tree 2.4.0 → 2.6.0
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/.github/workflows/main.yml +1 -1
- data/CHANGELOG.md +31 -1
- data/Gemfile +0 -2
- data/Gemfile.lock +5 -3
- data/README.md +62 -8
- data/Rakefile +5 -20
- data/lib/syntax_tree/formatter/single_quotes.rb +13 -0
- data/lib/syntax_tree/formatter/trailing_comma.rb +13 -0
- data/lib/syntax_tree/formatter.rb +8 -2
- data/lib/syntax_tree/node.rb +141 -107
- data/lib/syntax_tree/parser.rb +120 -2
- data/lib/syntax_tree/plugin/single_quotes.rb +4 -0
- data/lib/syntax_tree/plugin/trailing_comma.rb +4 -0
- data/lib/syntax_tree/rake/check_task.rb +66 -0
- data/lib/syntax_tree/rake/write_task.rb +66 -0
- data/lib/syntax_tree/rake_tasks.rb +4 -0
- data/lib/syntax_tree/version.rb +1 -1
- data/lib/syntax_tree/visitor/field_visitor.rb +8 -0
- data/lib/syntax_tree/visitor/match_visitor.rb +2 -2
- data/lib/syntax_tree/visitor.rb +3 -0
- data/lib/syntax_tree.rb +3 -27
- data/syntax_tree.gemspec +3 -0
- metadata +37 -3
- data/lib/syntax_tree/prettyprint.rb +0 -1159
@@ -586,6 +586,14 @@ module SyntaxTree
|
|
586
586
|
end
|
587
587
|
end
|
588
588
|
|
589
|
+
def visit_lambda_var(node)
|
590
|
+
node(node, "lambda_var") do
|
591
|
+
field("params", node.params)
|
592
|
+
list("locals", node.locals) if node.locals.any?
|
593
|
+
comments(node)
|
594
|
+
end
|
595
|
+
end
|
596
|
+
|
589
597
|
def visit_lbrace(node)
|
590
598
|
visit_token(node, "lbrace")
|
591
599
|
end
|
@@ -22,7 +22,7 @@ module SyntaxTree
|
|
22
22
|
# entire value into the output buffer.
|
23
23
|
q.text(node.inspect)
|
24
24
|
else
|
25
|
-
|
25
|
+
node.pretty_print(q)
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
@@ -114,7 +114,7 @@ module SyntaxTree
|
|
114
114
|
q.nest(0) do
|
115
115
|
q.text(name)
|
116
116
|
q.text(": ")
|
117
|
-
|
117
|
+
value.pretty_print(q)
|
118
118
|
end
|
119
119
|
end
|
120
120
|
end
|
data/lib/syntax_tree/visitor.rb
CHANGED
data/lib/syntax_tree.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require "json"
|
4
4
|
require "pp"
|
5
|
-
require "
|
5
|
+
require "prettier_print"
|
6
6
|
require "ripper"
|
7
7
|
require "stringio"
|
8
8
|
|
@@ -16,30 +16,6 @@ require_relative "syntax_tree/visitor/json_visitor"
|
|
16
16
|
require_relative "syntax_tree/visitor/match_visitor"
|
17
17
|
require_relative "syntax_tree/visitor/pretty_print_visitor"
|
18
18
|
|
19
|
-
# If PrettyPrint::Align isn't defined, then we haven't gotten the updated
|
20
|
-
# version of prettyprint. In that case we'll define our own. This is going to
|
21
|
-
# overwrite a bunch of methods, so silencing them as well.
|
22
|
-
unless PrettyPrint.const_defined?(:Align)
|
23
|
-
verbose = $VERBOSE
|
24
|
-
$VERBOSE = nil
|
25
|
-
|
26
|
-
begin
|
27
|
-
require_relative "syntax_tree/prettyprint"
|
28
|
-
ensure
|
29
|
-
$VERBOSE = verbose
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
# When PP is running, it expects that everything that interacts with it is going
|
34
|
-
# to flow through PP.pp, since that's the main entry into the module from the
|
35
|
-
# perspective of its uses in core Ruby. In doing so, it calls guard_inspect_key
|
36
|
-
# at the top of the PP.pp method, which establishes some thread-local hashes to
|
37
|
-
# check for cycles in the pretty printed tree. This means that if you want to
|
38
|
-
# manually call pp on some object _before_ you have established these hashes,
|
39
|
-
# you're going to break everything. So this call ensures that those hashes have
|
40
|
-
# been set up before anything uses pp manually.
|
41
|
-
PP.new(+"", 0).guard_inspect_key {}
|
42
|
-
|
43
19
|
# Syntax Tree is a suite of tools built on top of the internal CRuby parser. It
|
44
20
|
# provides the ability to generate a syntax tree from source, as well as the
|
45
21
|
# tools necessary to inspect and manipulate that syntax tree. It can be used to
|
@@ -64,8 +40,8 @@ module SyntaxTree
|
|
64
40
|
end
|
65
41
|
|
66
42
|
# Parses the given source and returns the formatted source.
|
67
|
-
def self.format(source)
|
68
|
-
formatter = Formatter.new(source, [])
|
43
|
+
def self.format(source, maxwidth = 80)
|
44
|
+
formatter = Formatter.new(source, [], maxwidth)
|
69
45
|
parse(source).format(formatter)
|
70
46
|
|
71
47
|
formatter.flush
|
data/syntax_tree.gemspec
CHANGED
@@ -25,8 +25,11 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
26
26
|
spec.require_paths = %w[lib]
|
27
27
|
|
28
|
+
spec.add_dependency "prettier_print"
|
29
|
+
|
28
30
|
spec.add_development_dependency "bundler"
|
29
31
|
spec.add_development_dependency "minitest"
|
30
32
|
spec.add_development_dependency "rake"
|
33
|
+
spec.add_development_dependency "rubocop"
|
31
34
|
spec.add_development_dependency "simplecov"
|
32
35
|
end
|
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: syntax_tree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin Newton
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-05-
|
11
|
+
date: 2022-05-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: prettier_print
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bundler
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,6 +66,20 @@ dependencies:
|
|
52
66
|
- - ">="
|
53
67
|
- !ruby/object:Gem::Version
|
54
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rubocop
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
55
83
|
- !ruby/object:Gem::Dependency
|
56
84
|
name: simplecov
|
57
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -95,11 +123,17 @@ files:
|
|
95
123
|
- lib/syntax_tree.rb
|
96
124
|
- lib/syntax_tree/cli.rb
|
97
125
|
- lib/syntax_tree/formatter.rb
|
126
|
+
- lib/syntax_tree/formatter/single_quotes.rb
|
127
|
+
- lib/syntax_tree/formatter/trailing_comma.rb
|
98
128
|
- lib/syntax_tree/language_server.rb
|
99
129
|
- lib/syntax_tree/language_server/inlay_hints.rb
|
100
130
|
- lib/syntax_tree/node.rb
|
101
131
|
- lib/syntax_tree/parser.rb
|
102
|
-
- lib/syntax_tree/
|
132
|
+
- lib/syntax_tree/plugin/single_quotes.rb
|
133
|
+
- lib/syntax_tree/plugin/trailing_comma.rb
|
134
|
+
- lib/syntax_tree/rake/check_task.rb
|
135
|
+
- lib/syntax_tree/rake/write_task.rb
|
136
|
+
- lib/syntax_tree/rake_tasks.rb
|
103
137
|
- lib/syntax_tree/version.rb
|
104
138
|
- lib/syntax_tree/visitor.rb
|
105
139
|
- lib/syntax_tree/visitor/field_visitor.rb
|