syntax_tree 2.3.1 → 2.5.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.
@@ -1,6 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SyntaxTree
4
+ # Visitor is a parent class that provides the ability to walk down the tree
5
+ # and handle a subset of nodes. By defining your own subclass, you can
6
+ # explicitly handle a node type by defining a visit_* method.
4
7
  class Visitor
5
8
  # This is raised when you use the Visitor.visit_method method and it fails.
6
9
  # It is correctable to through DidYouMean.
@@ -24,7 +27,9 @@ module SyntaxTree
24
27
 
25
28
  def corrections
26
29
  @corrections ||=
27
- DidYouMean::SpellChecker.new(dictionary: Visitor.visit_methods).correct(visit_method)
30
+ DidYouMean::SpellChecker.new(
31
+ dictionary: Visitor.visit_methods
32
+ ).correct(visit_method)
28
33
  end
29
34
 
30
35
  DidYouMean.correct_error(VisitMethodError, self)
data/lib/syntax_tree.rb CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  require "json"
4
4
  require "pp"
5
- require "prettyprint"
5
+ require "prettier_print"
6
6
  require "ripper"
7
7
  require "stringio"
8
8
 
@@ -11,23 +11,15 @@ require_relative "syntax_tree/node"
11
11
  require_relative "syntax_tree/parser"
12
12
  require_relative "syntax_tree/version"
13
13
  require_relative "syntax_tree/visitor"
14
+ require_relative "syntax_tree/visitor/field_visitor"
14
15
  require_relative "syntax_tree/visitor/json_visitor"
16
+ require_relative "syntax_tree/visitor/match_visitor"
15
17
  require_relative "syntax_tree/visitor/pretty_print_visitor"
16
18
 
17
- # If PrettyPrint::Align isn't defined, then we haven't gotten the updated
18
- # version of prettyprint. In that case we'll define our own. This is going to
19
- # overwrite a bunch of methods, so silencing them as well.
20
- unless PrettyPrint.const_defined?(:Align)
21
- verbose = $VERBOSE
22
- $VERBOSE = nil
23
-
24
- begin
25
- require_relative "syntax_tree/prettyprint"
26
- ensure
27
- $VERBOSE = verbose
28
- end
29
- end
30
-
19
+ # Syntax Tree is a suite of tools built on top of the internal CRuby parser. It
20
+ # provides the ability to generate a syntax tree from source, as well as the
21
+ # tools necessary to inspect and manipulate that syntax tree. It can be used to
22
+ # build formatters, linters, language servers, and more.
31
23
  module SyntaxTree
32
24
  # This holds references to objects that respond to both #parse and #format
33
25
  # so that we can use them in the CLI.
@@ -48,8 +40,8 @@ module SyntaxTree
48
40
  end
49
41
 
50
42
  # Parses the given source and returns the formatted source.
51
- def self.format(source)
52
- formatter = Formatter.new(source, [])
43
+ def self.format(source, maxwidth = 80)
44
+ formatter = Formatter.new(source, [], maxwidth)
53
45
  parse(source).format(formatter)
54
46
 
55
47
  formatter.flush
@@ -61,8 +53,10 @@ module SyntaxTree
61
53
  def self.read(filepath)
62
54
  encoding =
63
55
  File.open(filepath, "r") do |file|
56
+ break Encoding.default_external if file.eof?
57
+
64
58
  header = file.readline
65
- header += file.readline if header.start_with?("#!")
59
+ header += file.readline if !file.eof? && header.start_with?("#!")
66
60
  Ripper.new(header).tap(&:parse).encoding
67
61
  end
68
62
 
data/syntax_tree.gemspec CHANGED
@@ -1,30 +1,35 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative 'lib/syntax_tree/version'
3
+ require_relative "lib/syntax_tree/version"
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = 'syntax_tree'
7
- spec.version = SyntaxTree::VERSION
8
- spec.authors = ['Kevin Newton']
9
- spec.email = ['kddnewton@gmail.com']
10
-
11
- spec.summary = 'A parser based on ripper'
12
- spec.homepage = 'https://github.com/kddnewton/syntax_tree'
13
- spec.license = 'MIT'
14
- spec.metadata = { 'rubygems_mfa_required' => 'true' }
15
-
16
- spec.files = Dir.chdir(__dir__) do
17
- `git ls-files -z`.split("\x0").reject do |f|
18
- f.match(%r{^(test|spec|features)/})
6
+ spec.name = "syntax_tree"
7
+ spec.version = SyntaxTree::VERSION
8
+ spec.authors = ["Kevin Newton"]
9
+ spec.email = ["kddnewton@gmail.com"]
10
+
11
+ spec.summary = "A parser based on ripper"
12
+ spec.homepage = "https://github.com/kddnewton/syntax_tree"
13
+ spec.license = "MIT"
14
+ spec.metadata = { "rubygems_mfa_required" => "true" }
15
+
16
+ spec.files =
17
+ Dir.chdir(__dir__) do
18
+ `git ls-files -z`.split("\x0")
19
+ .reject { |f| f.match(%r{^(test|spec|features)/}) }
19
20
  end
20
- end
21
21
 
22
- spec.bindir = 'exe'
23
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
+ spec.required_ruby_version = ">= 2.7.3"
23
+
24
+ spec.bindir = "exe"
25
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
26
  spec.require_paths = %w[lib]
25
27
 
26
- spec.add_development_dependency 'bundler'
27
- spec.add_development_dependency 'minitest'
28
- spec.add_development_dependency 'rake'
29
- spec.add_development_dependency 'simplecov'
28
+ spec.add_dependency "prettier_print"
29
+
30
+ spec.add_development_dependency "bundler"
31
+ spec.add_development_dependency "minitest"
32
+ spec.add_development_dependency "rake"
33
+ spec.add_development_dependency "rubocop"
34
+ spec.add_development_dependency "simplecov"
30
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.3.1
4
+ version: 2.5.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-04-22 00:00:00.000000000 Z
11
+ date: 2022-05-14 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
@@ -78,6 +106,7 @@ files:
78
106
  - ".github/workflows/gh-pages.yml"
79
107
  - ".github/workflows/main.yml"
80
108
  - ".gitignore"
109
+ - ".rubocop.yml"
81
110
  - CHANGELOG.md
82
111
  - CODE_OF_CONDUCT.md
83
112
  - Gemfile
@@ -88,19 +117,23 @@ files:
88
117
  - bin/bench
89
118
  - bin/console
90
119
  - bin/profile
120
+ - config/rubocop.yml
91
121
  - doc/logo.svg
92
122
  - exe/stree
93
123
  - lib/syntax_tree.rb
94
124
  - lib/syntax_tree/cli.rb
95
125
  - lib/syntax_tree/formatter.rb
126
+ - lib/syntax_tree/formatter/single_quotes.rb
96
127
  - lib/syntax_tree/language_server.rb
97
128
  - lib/syntax_tree/language_server/inlay_hints.rb
98
129
  - lib/syntax_tree/node.rb
99
130
  - lib/syntax_tree/parser.rb
100
- - lib/syntax_tree/prettyprint.rb
131
+ - lib/syntax_tree/plugin/single_quotes.rb
101
132
  - lib/syntax_tree/version.rb
102
133
  - lib/syntax_tree/visitor.rb
134
+ - lib/syntax_tree/visitor/field_visitor.rb
103
135
  - lib/syntax_tree/visitor/json_visitor.rb
136
+ - lib/syntax_tree/visitor/match_visitor.rb
104
137
  - lib/syntax_tree/visitor/pretty_print_visitor.rb
105
138
  - syntax_tree.gemspec
106
139
  homepage: https://github.com/kddnewton/syntax_tree
@@ -116,14 +149,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
116
149
  requirements:
117
150
  - - ">="
118
151
  - !ruby/object:Gem::Version
119
- version: '0'
152
+ version: 2.7.3
120
153
  required_rubygems_version: !ruby/object:Gem::Requirement
121
154
  requirements:
122
155
  - - ">="
123
156
  - !ruby/object:Gem::Version
124
157
  version: '0'
125
158
  requirements: []
126
- rubygems_version: 3.4.0.dev
159
+ rubygems_version: 3.3.3
127
160
  signing_key:
128
161
  specification_version: 4
129
162
  summary: A parser based on ripper