syntax_tree 1.1.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 872e3355e589d7a18b916de52fc30d8ac7e52a9c746550082ed8fc503bd178b8
4
- data.tar.gz: d27214567e9b0c9f9cf14b8874e839d7c90d7fec89d9a94c117e4e83028165a2
3
+ metadata.gz: 7275d7d2b3ec2fa399a51438f4fd3acd5f3d6e841552b67627f8a5899e5e91fd
4
+ data.tar.gz: accab14f12d6b954ec21d162e60407d7cdbbc487e1752cb285c04254097e3900
5
5
  SHA512:
6
- metadata.gz: 0d131267335b65e4ebd9c12c86275a64d556a9314a1d509b4a8c3629f553ed06e304abce59faab2b13a64bdd8a825101a3baf52e97e60cde8b5eeba2488621e7
7
- data.tar.gz: 12f8ecf7e54688af0a2bac223320197113012c8b83a1db1135f51bf8192d8012462499f810c05bfb6d8d88f7c59551a467e4104cd12ec4094fd5722c3f940b64
6
+ metadata.gz: b6c2bd9df0666ed9956df6db652b6b8edaed7f2a27bb1198eaab84e41018300a8ca8e0071ca598bddfd1e768cbd2c57f8b7e87ae412b231f2ee22701943822fa
7
+ data.tar.gz: 6693b2cdd4793ce9c2268b65b72e81a54dca3130f2bd10d7b3e249b542dcdf513f9e6f8803db916b3ac183b095aa0ad6b14895a556622762263b2004f3e2b6ce
@@ -0,0 +1,26 @@
1
+ name: Github Pages (rdoc)
2
+ on: [push]
3
+ jobs:
4
+ build-and-deploy:
5
+ runs-on: ubuntu-latest
6
+ steps:
7
+ - name: Checkout 🛎️
8
+ uses: actions/checkout@master
9
+
10
+ - name: Set up Ruby 💎
11
+ uses: ruby/setup-ruby@v1
12
+ with:
13
+ bundler-cache: true
14
+ ruby-version: '3.1'
15
+
16
+ - name: Install rdoc and generate docs 🔧
17
+ run: |
18
+ gem install rdoc
19
+ rdoc --main README.md --op rdocs --exclude={Gemfile,Rakefile,"coverage/*","vendor/*","bin/*","test/*","tmp/*"}
20
+ cp -r doc rdocs/doc
21
+
22
+ - name: Deploy 🚀
23
+ uses: peaceiris/actions-gh-pages@v3
24
+ with:
25
+ github_token: ${{ secrets.GITHUB_TOKEN }}
26
+ publish_dir: ./rdocs
@@ -13,7 +13,7 @@ jobs:
13
13
  - uses: ruby/setup-ruby@v1
14
14
  with:
15
15
  bundler-cache: true
16
- ruby-version: 3.0
16
+ ruby-version: '3.1'
17
17
  - name: Test
18
18
  run: bundle exec rake test
19
19
  automerge:
data/.gitignore CHANGED
@@ -2,8 +2,8 @@
2
2
  /.yardoc
3
3
  /_yardoc/
4
4
  /coverage/
5
- /doc/
6
5
  /pkg/
6
+ /rdocs/
7
7
  /spec/reports/
8
8
  /tmp/
9
9
 
data/CHANGELOG.md CHANGED
@@ -6,6 +6,39 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [2.0.0] - 2022-03-31
10
+
11
+ ### Added
12
+
13
+ - The new `SyntaxTree.register_handler` hook for plugins.
14
+ - The new `--plugins=` option on the CLI.
15
+
16
+ ### Changed
17
+
18
+ - Changed `SyntaxTree` from being a class to being a module. The parser functionality is moved into `SyntaxTree::Parser`.
19
+ - There is now a parent class for all of the nodes named `SyntaxTree::Node`.
20
+ - The `Implicits` class has been renamed to `InlayHints` to match the new LSP spec.
21
+
22
+ ### Removed
23
+
24
+ - The disassembly code action has been removed to limit the scope of this project overall.
25
+
26
+ ## [1.2.0] - 2022-01-09
27
+
28
+ ### Added
29
+
30
+ - Support for Ruby 3.1 syntax, including: blocks without names, hash keys without values, endless methods without parentheses, and new argument forwarding.
31
+ - Support for pinned expressions and variables within pattern matching.
32
+ - Support endless ranges as the final argument to a `when` clause.
33
+
34
+ ## [1.1.1] - 2021-12-09
35
+
36
+ ### Added
37
+
38
+ - [#7](https://github.com/kddnewton/syntax_tree/issues/7) Better formatting for hashes and arrays that are values in hashes.
39
+ - [#9](https://github.com/kddnewton/syntax_tree/issues/9) Special handling for RSpec matchers when nesting `CommandCall` nodes.
40
+ - [#10](https://github.com/kddnewton/syntax_tree/issues/10) Force the maintaining of the modifier forms of conditionals and loops if the statement includes an assignment. Also, for the maintaining of the block form of conditionals and loops if the predicate includes an assignment.
41
+
9
42
  ## [1.1.0] - 2021-12-08
10
43
 
11
44
  ### Added
@@ -89,6 +122,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
89
122
 
90
123
  - 🎉 Initial release! 🎉
91
124
 
92
- [unreleased]: https://github.com/kddnewton/syntax_tree/compare/v1.0.0...HEAD
125
+ [unreleased]: https://github.com/kddnewton/syntax_tree/compare/v1.2.0...HEAD
126
+ [1.2.0]: https://github.com/kddnewton/syntax_tree/compare/v1.1.1...v1.2.0
127
+ [1.1.1]: https://github.com/kddnewton/syntax_tree/compare/v1.1.0...v1.1.1
128
+ [1.1.0]: https://github.com/kddnewton/syntax_tree/compare/v1.0.0...v1.1.0
93
129
  [1.0.0]: https://github.com/kddnewton/syntax_tree/compare/v0.1.0...v1.0.0
94
130
  [0.1.0]: https://github.com/kddnewton/syntax_tree/compare/8aa1f5...v0.1.0
data/Gemfile.lock CHANGED
@@ -1,19 +1,19 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- syntax_tree (1.1.0)
4
+ syntax_tree (2.0.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
9
  ast (2.4.2)
10
- benchmark-ips (2.9.2)
10
+ benchmark-ips (2.10.0)
11
11
  docile (1.4.0)
12
- minitest (5.14.4)
13
- parser (3.0.3.2)
12
+ minitest (5.15.0)
13
+ parser (3.1.1.0)
14
14
  ast (~> 2.4.1)
15
15
  rake (13.0.6)
16
- ruby_parser (3.18.1)
16
+ ruby_parser (3.19.0)
17
17
  sexp_processor (~> 4.16)
18
18
  sexp_processor (4.16.0)
19
19
  simplecov (0.21.2)
@@ -22,10 +22,11 @@ GEM
22
22
  simplecov_json_formatter (~> 0.1)
23
23
  simplecov-html (0.12.3)
24
24
  simplecov_json_formatter (0.1.3)
25
- stackprof (0.2.17)
25
+ stackprof (0.2.19)
26
26
 
27
27
  PLATFORMS
28
28
  x86_64-darwin-19
29
+ x86_64-darwin-21
29
30
  x86_64-linux
30
31
 
31
32
  DEPENDENCIES
@@ -40,4 +41,4 @@ DEPENDENCIES
40
41
  syntax_tree!
41
42
 
42
43
  BUNDLED WITH
43
- 2.2.15
44
+ 2.2.31
data/README.md CHANGED
@@ -1,9 +1,13 @@
1
+ <div align="center">
2
+ <img alt="Syntax Tree" height="400px" src="./doc/logo.svg">
3
+ </div>
4
+
1
5
  # SyntaxTree
2
6
 
3
7
  [![Build Status](https://github.com/kddnewton/syntax_tree/workflows/Main/badge.svg)](https://github.com/kddnewton/syntax_tree/actions)
4
8
  [![Gem Version](https://img.shields.io/gem/v/syntax_tree.svg)](https://rubygems.org/gems/syntax_tree)
5
9
 
6
- A fast ripper subclass used for parsing and formatting Ruby code.
10
+ A fast Ruby parser and formatter with only standard library dependencies.
7
11
 
8
12
  ## Installation
9
13
 
data/bin/bench CHANGED
@@ -1,23 +1,23 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'bundler/setup'
5
- require 'benchmark/ips'
4
+ require "bundler/setup"
5
+ require "benchmark/ips"
6
6
 
7
- require_relative '../lib/syntax_tree'
8
- require 'ruby_parser'
9
- require 'parser/current'
7
+ require_relative "../lib/syntax_tree"
8
+ require "ruby_parser"
9
+ require "parser/current"
10
10
 
11
11
  def compare(filepath)
12
- prefix = "#{File.expand_path('..', __dir__)}/"
12
+ prefix = "#{File.expand_path("..", __dir__)}/"
13
13
  puts "=== #{filepath.delete_prefix(prefix)} ==="
14
14
 
15
15
  source = File.read(filepath)
16
16
 
17
17
  Benchmark.ips do |x|
18
- x.report('syntax_tree') { SyntaxTree.new(source).parse }
19
- x.report('parser') { Parser::CurrentRuby.parse(source) }
20
- x.report('ruby_parser') { RubyParser.new.parse(source) }
18
+ x.report("syntax_tree") { SyntaxTree.parse(source) }
19
+ x.report("parser") { Parser::CurrentRuby.parse(source) }
20
+ x.report("ruby_parser") { RubyParser.new.parse(source) }
21
21
  x.compare!
22
22
  end
23
23
  end
@@ -29,8 +29,8 @@ filepaths = ARGV
29
29
  # file).
30
30
  if filepaths.empty?
31
31
  filepaths = [
32
- File.expand_path('bench', __dir__),
33
- File.expand_path('../lib/syntax_tree.rb', __dir__)
32
+ File.expand_path("bench", __dir__),
33
+ File.expand_path("../lib/syntax_tree.rb", __dir__)
34
34
  ]
35
35
  end
36
36
 
data/bin/console CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'bundler/setup'
5
- require 'syntax_tree'
4
+ require "bundler/setup"
5
+ require "syntax_tree"
6
6
 
7
- require 'irb'
7
+ require "irb"
8
8
  IRB.start(__FILE__)
data/bin/profile CHANGED
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'bundler/setup'
5
- require 'stackprof'
4
+ require "bundler/setup"
5
+ require "stackprof"
6
6
 
7
- filepath = File.expand_path('../lib/syntax_tree', __dir__)
7
+ filepath = File.expand_path("../lib/syntax_tree", __dir__)
8
8
  require_relative filepath
9
9
 
10
10
  GC.disable
data/doc/logo.svg ADDED
@@ -0,0 +1,284 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 10 700 520" width="700" height="510">
4
+ <path fill="black">
5
+ <animate
6
+ attributeName="d"
7
+ values="
8
+ M 350, 700 l 0, 0 c 0, 0, 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 q 0, 0, 0, 0 q 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 q 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 q 0, 0, 0, 0 q 0, 0, 0, 0 q 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 z;
9
+ M 346, 700 l 8, 0 c 10, -20, 20, -50, 15, -80 c 0, 0, 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 q 0, 0, 0, 0 q 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 q 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 q 0, 0, 0, 0 q 0, 0, 0, 0 q 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 c -5, 10, -10, 50, -40, 80 z ;
10
+ M 340, 700 l 20, 0 c 30, -100, 30, -150, 10, -200 c 0, 0, 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 q 0, 0, 0, 0 q 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 q 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 q 0, 0, 0, 0 q 0, 0, 0, 0 q 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 c 10, 50, -10, 150, -50, 200 z ;
11
+ M 338, 700 l 24, 0 c 50, -150, 10, -160, 0, -300 c 0, -30, 0, -60, 5, -65 c 0, 0, 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 q 0, 0, 0, 0 q -3, 0, -6, 10 c 0, -30, 0, -40, -2, -50 q 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 q 0, 0, 0, 0 q 0, 0, 0, 0 q 0, 0, 0, 0 c 0, 10, -5, 10, -5, 20 c -5, -5, -5, 0, -10, -5 c 0, 0, 0, 0, 0, 0 c 10, 50, 60, 300, -35, 390 z ;
12
+ M 335, 700 l 30, 0 c 50, -150, 10, -160, 0, -300 c 0, -50, 0, -80, 20, -80 c 0, 0, 0, 0, 0, 0 c 0, 0, 0, 0, 0, 0 q 0, 0, 0, 0 q -10, 0, -20, 10 c 0, -30, -20, -70, 10, -85 q -5, -5, -15, 5 c -10, -40, 10, -60, 30, -60 c 0, 0, 0, 0, 0, 0 c -10, 0, -20, 0, -30, 10 q 0, -10, 2, -20 q -12, 45, -6, 55 q -5, -15, -10, -20 c 0, 20, 20, 20, 5, 90 c -10, -5, -10, 0, -15, -5 c 0, 0, 0, 0, 0, 0 c 20, 50, 70, 300, -30, 400 z ;
13
+ M 335, 700 l 30, 0 c 50, -150, 10, -160, 0, -300 c 0, -50, 0, -90, 50, -75 c 0, 0, 0, 0, 0, 0 c -15, -10, -20, -15, -30, -10 q 10, -8, 20, -10 q -30, 0, -40, 20 c 0, -30, -20, -70, 30, -85 q -20, -5, -30, 5 c -10, -40, 20, -60, 40, -60 c 0, 0, 0, 0, 0, 0 c -20, 0, -30, 0, -40, 10 q 0, -20, 5, -40 q -10, 0, -20, 60 q -10, -15, -20, -20 c 0, 40, 30, 40, 20, 100 c -20, -5, -20, 0, -30, -5 c 10, 10, 30, 20, 40, 180 c 10, 130, -30, 200, -60, 230 z ;
14
+ "
15
+ begin="0s"
16
+ dur="1s"
17
+ />
18
+ <animate
19
+ attributeName="d"
20
+ values="
21
+ M 335, 700 l 30, 0 c 50, -150, 10, -160, 0, -300 c 0, -50, 0, -90, 50, -75 c 0, 0, 0, 0, 0, 0 c -15, -10, -20, -15, -30, -10 q 10, -8, 20, -10 q -30, 0, -40, 20 c 0, -30, -20, -70, 30, -85 q -20, -5, -30, 5 c -10, -40, 20, -60, 40, -60 c 0, 0, 0, 0, 0, 0 c -20, 0, -30, 0, -40, 10 q 0, -20, 5, -40 q -10, 0, -20, 60 q -10, -15, -20, -20 c 0, 40, 30, 40, 20, 100 c -20, -5, -20, 0, -30, -5 c 10, 10, 30, 20, 40, 180 c 10, 130, -30, 200, -60, 230 z ;
22
+ M 330, 700 l 40, 0 c 50, -150, 10, -160, 0, -300 c 0, -50, 0, -90, 70, -60 c 20, 10, 100, 30, 150, -20 c -120, 50, -150, -15, -180, -10 q 50, -30, 120, -15 q -80, -50, -160, 20 c -10, -60, 0, -80, 160, -70 q -80, -30, -160, -10 c -10, -30, 20, -40, 40, -40 c 50, 0, 80, -10, 100, -40 c -80, 50, -100, 0, -140, 30 q 0, -50, 60, -100 q -50, 0, -90, 110 q -90, -80, -100, -120 c -10, 100, 90, 90, 100, 200 c -120, -30, -160, 30, -200, -30 c 10, 90, 180, 0, 200, 110 c 30, 200, 20, 250, -50, 345 z
23
+ "
24
+ begin="1s"
25
+ dur=".5s"
26
+ fill="freeze"
27
+ />
28
+ <animate attributeName="opacity" to=".1" dur="1s" begin="3.0s" fill="freeze" />
29
+ </path>
30
+ <defs>
31
+ <path id="ruby" d="M 4 0 l 18, 0 l 4, 9, l -13, 11, l -13, -11 z" />
32
+ </defs>
33
+ <g fill="red" opacity="0">
34
+ <animate attributeName="opacity" to="1" dur="1s" begin="2s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
35
+ <g>
36
+ <g>
37
+ <animate attributeName="opacity" to=".1" dur="1s" begin="5s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
38
+ <use href="#ruby" x="220" y="40"><animate attributeName="x" to="20" dur="1s" begin="3.0s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
39
+ <use href="#ruby" x="260" y="40"><animate attributeName="x" to="60" dur="1s" begin="3.05s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
40
+ <use href="#ruby" x="300" y="40"><animate attributeName="x" to="100" dur="1s" begin="3.1s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
41
+ <use href="#ruby" x="340" y="40"><animate attributeName="x" to="140" dur="1s" begin="3.15s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
42
+ <use href="#ruby" x="380" y="40"><animate attributeName="x" to="180" dur="1s" begin="3.2s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
43
+ <use href="#ruby" x="420" y="40"><animate attributeName="x" to="220" dur="1s" begin="3.25s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
44
+ <use href="#ruby" x="460" y="40"><animate attributeName="x" to="260" dur="1s" begin="3.3s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
45
+ <use href="#ruby" x="500" y="40"><animate attributeName="x" to="300" dur="1s" begin="3.35s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
46
+ </g>
47
+ </g>
48
+ <g>
49
+ <g>
50
+ <animate attributeName="opacity" to=".1" dur="1s" begin="5s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
51
+ <use href="#ruby" x="200" y="80"><animate attributeName="x" to="20" dur="1s" begin="3.0s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
52
+ <use href="#ruby" x="480" y="80"><animate attributeName="x" to="220" dur="1s" begin="3.25s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
53
+ <use href="#ruby" x="520" y="80"><animate attributeName="x" to="260" dur="1s" begin="3.3s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
54
+ </g>
55
+ <g>
56
+ <animate attributeName="fill" to="teal" dur="1s" begin="5s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
57
+ <use href="#ruby" x="280" y="80"><animate attributeName="x" to="60" dur="1s" begin="3.05s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
58
+ <use href="#ruby" x="320" y="80"><animate attributeName="x" to="100" dur="1s" begin="3.1s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
59
+ <use href="#ruby" x="360" y="80"><animate attributeName="x" to="140" dur="1s" begin="3.15s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
60
+ <use href="#ruby" x="440" y="80"><animate attributeName="x" to="180" dur="1s" begin="3.2s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
61
+ </g>
62
+ </g>
63
+ <g>
64
+ <g>
65
+ <animate attributeName="opacity" to=".1" dur="1s" begin="5s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
66
+ <use href="#ruby" x="300" y="120"><animate attributeName="x" to="60" dur="1s" begin="3.05s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
67
+ <use href="#ruby" x="340" y="120"><animate attributeName="x" to="100" dur="1s" begin="3.1s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
68
+ <use href="#ruby" x="420" y="120"><animate attributeName="x" to="140" dur="1s" begin="3.15s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
69
+ <use href="#ruby" x="460" y="120"><animate attributeName="x" to="180" dur="1s" begin="3.2s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
70
+ <use href="#ruby" x="500" y="120"><animate attributeName="x" to="220" dur="1s" begin="3.25s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
71
+ <use href="#ruby" x="540" y="120"><animate attributeName="x" to="260" dur="1s" begin="3.3s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
72
+ </g>
73
+ <g>
74
+ <animate attributeName="fill" to="teal" dur="1s" begin="5s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
75
+ <use href="#ruby" x="180" y="120"><animate attributeName="x" to="20" dur="1s" begin="3.0s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
76
+ </g>
77
+ </g>
78
+ <g>
79
+ <g>
80
+ <animate attributeName="opacity" to=".1" dur="1s" begin="5s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
81
+ <use href="#ruby" x="160" y="160"><animate attributeName="x" to="20" dur="1s" begin="3.0s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
82
+ <use href="#ruby" x="520" y="160"><animate attributeName="x" to="180" dur="1s" begin="3.2s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
83
+ <use href="#ruby" x="560" y="160"><animate attributeName="x" to="220" dur="1s" begin="3.25s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
84
+ </g>
85
+ <g>
86
+ <animate attributeName="fill" to="teal" dur="1s" begin="5s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
87
+ <use href="#ruby" x="200" y="160"><animate attributeName="x" to="60" dur="1s" begin="3.05s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
88
+ <use href="#ruby" x="240" y="160"><animate attributeName="x" to="100" dur="1s" begin="3.1s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
89
+ <use href="#ruby" x="320" y="160"><animate attributeName="x" to="140" dur="1s" begin="3.15s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
90
+ </g>
91
+ </g>
92
+ <g>
93
+ <g>
94
+ <animate attributeName="opacity" to=".1" dur="1s" begin="5s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
95
+ <use href="#ruby" x="140" y="200"><animate attributeName="x" to="20" dur="1s" begin="3.0s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
96
+ <use href="#ruby" x="180" y="200"><animate attributeName="x" to="60" dur="1s" begin="3.05s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
97
+ <use href="#ruby" x="220" y="200"><animate attributeName="x" to="100" dur="1s" begin="3.1s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
98
+ <use href="#ruby" x="260" y="200"><animate attributeName="x" to="140" dur="1s" begin="3.15s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
99
+ <use href="#ruby" x="460" y="200"><animate attributeName="x" to="220" dur="1s" begin="3.25s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
100
+ <use href="#ruby" x="500" y="200"><animate attributeName="x" to="260" dur="1s" begin="3.3s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
101
+ <use href="#ruby" x="540" y="200"><animate attributeName="x" to="300" dur="1s" begin="3.35s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
102
+ <use href="#ruby" x="580" y="200"><animate attributeName="x" to="340" dur="1s" begin="3.4s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
103
+ </g>
104
+ <g>
105
+ <animate attributeName="fill" to="teal" dur="1s" begin="5s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
106
+ <use href="#ruby" x="420" y="200"><animate attributeName="x" to="180" dur="1s" begin="3.2s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
107
+ </g>
108
+ </g>
109
+ <g>
110
+ <g>
111
+ <animate attributeName="opacity" to=".1" dur="1s" begin="5s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
112
+ <use href="#ruby" x="560" y="240"><animate attributeName="x" to="180" dur="1s" begin="3.2s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
113
+ <use href="#ruby" x="600" y="240"><animate attributeName="x" to="220" dur="1s" begin="3.25s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
114
+ </g>
115
+ <g>
116
+ <animate attributeName="fill" to="teal" dur="1s" begin="5s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
117
+ <use href="#ruby" x="160" y="240"><animate attributeName="x" to="20" dur="1s" begin="3.0s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
118
+ <use href="#ruby" x="200" y="240"><animate attributeName="x" to="60" dur="1s" begin="3.05s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
119
+ <use href="#ruby" x="240" y="240"><animate attributeName="x" to="100" dur="1s" begin="3.1s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
120
+ <use href="#ruby" x="280" y="240"><animate attributeName="x" to="140" dur="1s" begin="3.15s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
121
+ </g>
122
+ </g>
123
+ <g>
124
+ <g>
125
+ <animate attributeName="opacity" to=".1" dur="1s" begin="5s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
126
+ <use href="#ruby" x="540" y="280"><animate attributeName="x" to="20" dur="1s" begin="3.0s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
127
+ <use href="#ruby" x="580" y="280"><animate attributeName="x" to="60" dur="1s" begin="3.05s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" /></use>
128
+ </g>
129
+ </g>
130
+ <g>
131
+ <g>
132
+ <animate attributeName="opacity" to=".1" dur="1s" begin="5s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
133
+ <use href="#ruby" x="520" y="315">
134
+ <animate attributeName="x" to="220" dur="1s" begin="3.25s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
135
+ <animate attributeName="y" to="320" dur="1s" begin="3.25s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
136
+ </use>
137
+ </g>
138
+ <g>
139
+ <animate attributeName="fill" to="teal" dur="1s" begin="5s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
140
+ <use href="#ruby" x="170" y="315">
141
+ <animate attributeName="x" to="20" dur="1s" begin="3.0s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
142
+ <animate attributeName="y" to="320" dur="1s" begin="3.0s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
143
+ </use>
144
+ <use href="#ruby" x="205" y="315">
145
+ <animate attributeName="x" to="60" dur="1s" begin="3.05s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
146
+ <animate attributeName="y" to="320" dur="1s" begin="3.05s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
147
+ </use>
148
+ <use href="#ruby" x="240" y="315">
149
+ <animate attributeName="x" to="100" dur="1s" begin="3.1s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
150
+ <animate attributeName="y" to="320" dur="1s" begin="3.1s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
151
+ </use>
152
+ <use href="#ruby" x="275" y="315">
153
+ <animate attributeName="x" to="140" dur="1s" begin="3.15s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
154
+ <animate attributeName="y" to="320" dur="1s" begin="3.15s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
155
+ </use>
156
+ <use href="#ruby" x="485" y="315">
157
+ <animate attributeName="x" to="180" dur="1s" begin="3.2s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
158
+ <animate attributeName="y" to="320" dur="1s" begin="3.2s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
159
+ </use>
160
+ </g>
161
+ </g>
162
+ <g>
163
+ <g>
164
+ <animate attributeName="opacity" to=".1" dur="1s" begin="5s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
165
+ <use href="#ruby" x="205" y="350">
166
+ <animate attributeName="x" to="20" dur="1s" begin="3.0s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
167
+ <animate attributeName="y" to="360" dur="1s" begin="3.0s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
168
+ </use>
169
+ <use href="#ruby" x="240" y="350">
170
+ <animate attributeName="x" to="60" dur="1s" begin="3.05s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
171
+ <animate attributeName="y" to="360" dur="1s" begin="3.05s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
172
+ </use>
173
+ <use href="#ruby" x="310" y="350">
174
+ <animate attributeName="x" to="140" dur="1s" begin="3.15s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
175
+ <animate attributeName="y" to="360" dur="1s" begin="3.15s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
176
+ </use>
177
+ <use href="#ruby" x="380" y="350">
178
+ <animate attributeName="x" to="180" dur="1s" begin="3.2s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
179
+ <animate attributeName="y" to="360" dur="1s" begin="3.2s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
180
+ </use>
181
+ <use href="#ruby" x="415" y="350">
182
+ <animate attributeName="x" to="220" dur="1s" begin="3.25s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
183
+ <animate attributeName="y" to="360" dur="1s" begin="3.25s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
184
+ </use>
185
+ </g>
186
+ <g>
187
+ <animate attributeName="fill" to="teal" dur="1s" begin="5s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
188
+ <use href="#ruby" x="275" y="350">
189
+ <animate attributeName="x" to="100" dur="1s" begin="3.1s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
190
+ <animate attributeName="y" to="360" dur="1s" begin="3.1s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
191
+ </use>
192
+ </g>
193
+ </g>
194
+ <g>
195
+ <g>
196
+ <animate attributeName="opacity" to=".1" dur="1s" begin="5s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
197
+ <use href="#ruby" x="240" y="385">
198
+ <animate attributeName="x" to="20" dur="1s" begin="3.0s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
199
+ <animate attributeName="y" to="400" dur="1s" begin="3.0s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
200
+ </use>
201
+ <use href="#ruby" x="275" y="385">
202
+ <animate attributeName="x" to="60" dur="1s" begin="3.05s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
203
+ <animate attributeName="y" to="400" dur="1s" begin="3.05s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
204
+ </use>
205
+ <use href="#ruby" x="380" y="385">
206
+ <animate attributeName="x" to="140" dur="1s" begin="3.15s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
207
+ <animate attributeName="y" to="400" dur="1s" begin="3.15s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
208
+ </use>
209
+ <use href="#ruby" x="415" y="385">
210
+ <animate attributeName="x" to="180" dur="1s" begin="3.2s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
211
+ <animate attributeName="y" to="400" dur="1s" begin="3.2s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
212
+ </use>
213
+ <use href="#ruby" x="450" y="385">
214
+ <animate attributeName="x" to="220" dur="1s" begin="3.25s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
215
+ <animate attributeName="y" to="400" dur="1s" begin="3.25s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
216
+ </use>
217
+ <use href="#ruby" x="485" y="385">
218
+ <animate attributeName="x" to="260" dur="1s" begin="3.3s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
219
+ <animate attributeName="y" to="400" dur="1s" begin="3.3s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
220
+ </use>
221
+ </g>
222
+ <g>
223
+ <animate attributeName="fill" to="teal" dur="1s" begin="5s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
224
+ <use href="#ruby" x="310" y="385">
225
+ <animate attributeName="x" to="100" dur="1s" begin="3.1s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
226
+ <animate attributeName="y" to="400" dur="1s" begin="3.1s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
227
+ </use>
228
+ </g>
229
+ </g>
230
+ <g>
231
+ <g>
232
+ <animate attributeName="opacity" to=".1" dur="1s" begin="5s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
233
+ <use href="#ruby" x="275" y="420">
234
+ <animate attributeName="x" to="20" dur="1s" begin="3.0s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
235
+ <animate attributeName="y" to="440" dur="1s" begin="3.0s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
236
+ </use>
237
+ <use href="#ruby" x="310" y="420">
238
+ <animate attributeName="x" to="60" dur="1s" begin="3.05s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
239
+ <animate attributeName="y" to="440" dur="1s" begin="3.05s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
240
+ </use>
241
+ <use href="#ruby" x="415" y="420">
242
+ <animate attributeName="x" to="140" dur="1s" begin="3.15s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
243
+ <animate attributeName="y" to="440" dur="1s" begin="3.15s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
244
+ </use>
245
+ <use href="#ruby" x="450" y="420">
246
+ <animate attributeName="x" to="180" dur="1s" begin="3.2s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
247
+ <animate attributeName="y" to="440" dur="1s" begin="3.2s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
248
+ </use>
249
+ </g>
250
+ <g>
251
+ <animate attributeName="fill" to="teal" dur="1s" begin="5s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
252
+ <use href="#ruby" x="380" y="420">
253
+ <animate attributeName="x" to="100" dur="1s" begin="3.1s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
254
+ <animate attributeName="y" to="440" dur="1s" begin="3.1s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
255
+ </use>
256
+ </g>
257
+ </g>
258
+ <g>
259
+ <g>
260
+ <animate attributeName="opacity" to=".1" dur="1s" begin="5s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
261
+ <use href="#ruby" x="310" y="455">
262
+ <animate attributeName="x" to="20" dur="1s" begin="3.0s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
263
+ <animate attributeName="y" to="480" dur="1s" begin="3.0s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
264
+ </use>
265
+ <use href="#ruby" x="380" y="455">
266
+ <animate attributeName="x" to="60" dur="1s" begin="3.05s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
267
+ <animate attributeName="y" to="480" dur="1s" begin="3.05s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
268
+ </use>
269
+ </g>
270
+ <g>
271
+ <animate attributeName="fill" to="teal" dur="1s" begin="5s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
272
+ <use href="#ruby" x="415" y="455">
273
+ <animate attributeName="x" to="100" dur="1s" begin="3.1s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
274
+ <animate attributeName="y" to="480" dur="1s" begin="3.1s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
275
+ </use>
276
+ </g>
277
+ </g>
278
+ </g>
279
+ <g opacity="0" fill="teal" font-size="140" font-family="monospace" letter-spacing="5">
280
+ <animate attributeName="opacity" to="1" dur="1s" begin="5s" calcMode="spline" keyTimes="0; 1" keySplines="0.25 0.25 0.25 0.75" fill="freeze" />
281
+ <text x="220" y="223">yntax</text>
282
+ <text x="220" y="464">ree</text>
283
+ </g>
284
+ </svg>
data/exe/stree CHANGED
@@ -2,6 +2,7 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  $:.unshift(File.expand_path("../lib", __dir__))
5
+
5
6
  require "syntax_tree"
6
7
  require "syntax_tree/cli"
7
8