ripper_tree 0.1.1 → 0.1.2
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/README.md +6 -6
- data/lib/ripper_tree/version.rb +1 -1
- data/lib/ripper_tree.rb +36 -53
- data/ripper_tree.gemspec +2 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: efb38adab6fad648b10c3c7fb100c6c7443f40f3
|
4
|
+
data.tar.gz: 271b928334b81a47a0734cc2188841a2630d5e06
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a8528a1c45506f517620fe3226cf9293ee4ef8e31a772e51a8dce83ee9e77ae02d3fea3a1d4be80c180f34df2bf782a15ee93c7258052a59bcab93e4802bddc2
|
7
|
+
data.tar.gz: ef0b256a981a8d95ed08acbf1aa848e9488274d4fee84bbdab193c0325816a2f72ce94afef84652d852cf85577cc0c08696d88d98afe5fd2ad7e6cb85207ff41
|
data/README.md
CHANGED
@@ -31,9 +31,9 @@ result
|
|
31
31
|
```ruby
|
32
32
|
:program
|
33
33
|
└──── :binary
|
34
|
-
├──── :@int [1] 1:0
|
34
|
+
├──── :@int ["1"] 1:0
|
35
35
|
├──── :+
|
36
|
-
└──── :@int [1] 1:4
|
36
|
+
└──── :@int ["1"] 1:4
|
37
37
|
```
|
38
38
|
|
39
39
|
if use in ruby code.
|
@@ -64,7 +64,7 @@ result
|
|
64
64
|
|
65
65
|
:program
|
66
66
|
└──── :command
|
67
|
-
├──── :@ident [puts] 1:0
|
67
|
+
├──── :@ident ["puts"] 1:0
|
68
68
|
└──── :args_add_block
|
69
69
|
├──── :string_literal
|
70
70
|
│ └──── :string_content
|
@@ -83,12 +83,12 @@ result
|
|
83
83
|
```ruby
|
84
84
|
:program
|
85
85
|
└──── :binary
|
86
|
-
├──── :@int [1] 1:0
|
86
|
+
├──── :@int ["1"] 1:0
|
87
87
|
├──── :+
|
88
88
|
└──── :binary
|
89
|
-
├──── :@int [2] 1:2
|
89
|
+
├──── :@int ["2"] 1:2
|
90
90
|
├──── :*
|
91
|
-
└──── :@int [3] 1:4
|
91
|
+
└──── :@int ["3"] 1:4
|
92
92
|
```
|
93
93
|
|
94
94
|
## Contributing
|
data/lib/ripper_tree/version.rb
CHANGED
data/lib/ripper_tree.rb
CHANGED
@@ -6,11 +6,11 @@ class RipperTree
|
|
6
6
|
T_LINE = '├────'
|
7
7
|
I_LINE = '│'
|
8
8
|
L_LINE = '└────'
|
9
|
-
|
9
|
+
SCANNER_EVENT = /^(@CHAR|@const|@cvar|@float|@gvar|@ident|@imaginary|@int|@ivar|@kw|@label|@op|@period|@rational|@regexp_end|@tstring_content)$/
|
10
10
|
|
11
|
-
def self.create(
|
11
|
+
def self.create(code)
|
12
12
|
new.tap do |rtree|
|
13
|
-
rtree.parse(Ripper.sexp(
|
13
|
+
rtree.parse(Ripper.sexp(code))
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
@@ -30,22 +30,18 @@ class RipperTree
|
|
30
30
|
end_line ? ' ' * RipperTree::OPTIONS[:space_size] : I_LINE + ' ' * (RipperTree::OPTIONS[:space_size]-1)
|
31
31
|
end
|
32
32
|
|
33
|
-
def
|
33
|
+
def output_event_id(id)
|
34
34
|
"#{id.inspect}\n".colorize(:magenta)
|
35
35
|
end
|
36
36
|
|
37
|
-
def output_string_node(node)
|
38
|
-
"#{node[0].inspect.colorize(:blue)} [#{node[1].inspect.colorize(:red)}] #{node[2].join(':')}\n"
|
39
|
-
end
|
40
|
-
|
41
37
|
def output_value_node(node)
|
42
|
-
"#{node[0].inspect.colorize(:blue)} [#{node[1]}] #{node[2].join(':')}\n"
|
38
|
+
"#{node[0].inspect.colorize(:blue)} [#{node[1].inspect.colorize(:red)}] #{node[2].join(':')}\n"
|
43
39
|
end
|
44
40
|
|
45
41
|
def parse_method_arguments(parent, space: ' ')
|
46
42
|
id = parent.first
|
47
43
|
|
48
|
-
@queue <<
|
44
|
+
@queue << output_event_id(id)
|
49
45
|
|
50
46
|
params = parent[1..-1].zip(%i(pars opts rest pars2 kws kwrest blk))
|
51
47
|
|
@@ -55,7 +51,7 @@ class RipperTree
|
|
55
51
|
@queue << get_line(end_line: params.empty?, space: space)
|
56
52
|
|
57
53
|
if param.instance_of?(Array)
|
58
|
-
@queue <<
|
54
|
+
@queue << output_event_id(arg_type)
|
59
55
|
|
60
56
|
if arg_type == :kwrest
|
61
57
|
s = space + get_space(end_line: params.empty? && param.empty?)
|
@@ -112,31 +108,28 @@ class RipperTree
|
|
112
108
|
end
|
113
109
|
|
114
110
|
def parse(parent, space: ' ')
|
115
|
-
|
111
|
+
event_id, *nodes = parent
|
112
|
+
|
113
|
+
if event_id.instance_of?(Array)
|
116
114
|
parse(parent.first, space: space)
|
117
115
|
return
|
118
116
|
end
|
119
117
|
|
120
|
-
|
121
|
-
|
122
|
-
case id
|
123
|
-
when /@tstring_content/
|
124
|
-
@queue << output_string_node(parent)
|
125
|
-
return
|
126
|
-
when VALUE_TOKEN
|
118
|
+
case event_id
|
119
|
+
when SCANNER_EVENT
|
127
120
|
@queue << output_value_node(parent)
|
128
121
|
return
|
129
122
|
when /array/
|
130
|
-
@queue <<
|
131
|
-
|
123
|
+
@queue << output_event_id(event_id)
|
124
|
+
nodes = parent[1].nil? ? [] : parent[1]
|
132
125
|
|
133
|
-
until
|
134
|
-
|
135
|
-
next if
|
136
|
-
next if
|
126
|
+
until nodes.empty?
|
127
|
+
node = nodes.shift
|
128
|
+
next if node == :args_add_star
|
129
|
+
next if node == []
|
137
130
|
|
138
|
-
@queue << get_line(end_line:
|
139
|
-
parse(
|
131
|
+
@queue << get_line(end_line: nodes.empty?, space: space)
|
132
|
+
parse(node, space: space + get_space(end_line: nodes.empty?))
|
140
133
|
end
|
141
134
|
|
142
135
|
return
|
@@ -144,40 +137,30 @@ class RipperTree
|
|
144
137
|
parse_method_arguments(parent, space: space)
|
145
138
|
return
|
146
139
|
when /void_stmt/
|
147
|
-
@queue <<
|
140
|
+
@queue << output_event_id(event_id)
|
148
141
|
return
|
149
142
|
else
|
150
|
-
@queue <<
|
151
|
-
end
|
143
|
+
@queue << output_event_id(event_id)
|
152
144
|
|
153
|
-
|
145
|
+
until nodes.empty?
|
146
|
+
node = nodes.shift
|
154
147
|
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
if child.instance_of?(Array)
|
166
|
-
if child.all? { |e| e.instance_of?(Array) }
|
167
|
-
until child.empty?
|
168
|
-
node = child.shift
|
169
|
-
@queue << get_line(end_line: children.empty? && child.empty?, space: space)
|
170
|
-
parse(node, space: space + get_space(end_line: children.empty? && child.empty?))
|
148
|
+
if node.instance_of?(Array) && !node.empty?
|
149
|
+
if node.all? { |e| e.instance_of?(Array) }
|
150
|
+
until node.empty?
|
151
|
+
event = node.shift
|
152
|
+
@queue << get_line(end_line: nodes.empty? && node.empty?, space: space)
|
153
|
+
parse(event, space: space + get_space(end_line: nodes.empty? && node.empty?))
|
154
|
+
end
|
155
|
+
else
|
156
|
+
@queue << get_line(end_line: nodes.empty?, space: space)
|
157
|
+
parse(node, space: space + get_space(end_line: nodes.empty?))
|
171
158
|
end
|
172
159
|
else
|
173
|
-
@queue << get_line(end_line:
|
174
|
-
|
160
|
+
@queue << get_line(end_line: nodes.empty?, space: space)
|
161
|
+
@queue << "#{node.inspect}\n"
|
175
162
|
end
|
176
|
-
else
|
177
|
-
@queue << get_line(end_line: children.empty?, space: space)
|
178
|
-
@queue << "#{child.inspect}\n"
|
179
163
|
end
|
180
|
-
end
|
181
164
|
end
|
182
165
|
end
|
183
166
|
end
|
data/ripper_tree.gemspec
CHANGED
@@ -10,8 +10,8 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.authors = ["siman-man"]
|
11
11
|
spec.email = ["k128585@ie.u-ryukyu.ac.jp"]
|
12
12
|
|
13
|
-
spec.summary = %q{tree command
|
14
|
-
spec.description = %q{tree command
|
13
|
+
spec.summary = %q{RipperTree is like tree command for Ripper#sexp.}
|
14
|
+
spec.description = %q{RipperTree is like tree command for Ripper#sexp.}
|
15
15
|
spec.homepage = "https://github.com/siman-man/ripper_tree"
|
16
16
|
spec.license = "MIT"
|
17
17
|
spec.required_ruby_version = '>= 2.1.0'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ripper_tree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- siman-man
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '3.0'
|
69
|
-
description: tree command
|
69
|
+
description: RipperTree is like tree command for Ripper#sexp.
|
70
70
|
email:
|
71
71
|
- k128585@ie.u-ryukyu.ac.jp
|
72
72
|
executables:
|
@@ -111,5 +111,5 @@ rubyforge_project:
|
|
111
111
|
rubygems_version: 2.6.10
|
112
112
|
signing_key:
|
113
113
|
specification_version: 4
|
114
|
-
summary: tree command
|
114
|
+
summary: RipperTree is like tree command for Ripper#sexp.
|
115
115
|
test_files: []
|