syntax_tree_ext 0.6.4 → 0.7.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 -0
- data/Gemfile.lock +1 -1
- data/lib/syntax_tree_ext/version.rb +1 -1
- data/lib/syntax_tree_ext.rb +7 -52
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 76f93356ad00c2206f575f6aa8117de178eb2710a6534f8df11c10871f68a9b8
|
4
|
+
data.tar.gz: a846f03d2f62bf8928764a6423df58ded2b1f524cf677c886f069f9e835cc7e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e677f857fe5e663a92d2e2905535647ce0c4c6927da6a151a1ab88fd7c3265d465efba409cd4147c7c20486e7aedde93cb7bfa715c00f19d499708bfb5ae17e
|
7
|
+
data.tar.gz: f9b15130df4786bb1b9548ea3d21eb234508270c38599b80cf01600fa7cd8de8c6150283c6e1e13bb69975b5aea6ad0535410fc952d8013963921ec4926efd7b
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## 0.7.1 (2024-02-11)
|
4
|
+
|
5
|
+
* Reuse `respond_to_assocs`
|
6
|
+
|
7
|
+
## 0.7.0 (2024-02-10)
|
8
|
+
|
9
|
+
* Remove `to_hash` extend
|
10
|
+
* Remove `siblings` method
|
11
|
+
* Hack `SyntaxTree.parse` instead of `SyntaxTree::Parser.parse`
|
12
|
+
|
3
13
|
## 0.6.4 (2023-08-17)
|
4
14
|
|
5
15
|
* `to_value` supports for empty array
|
data/Gemfile.lock
CHANGED
data/lib/syntax_tree_ext.rb
CHANGED
@@ -18,11 +18,11 @@ module SyntaxTreeExt
|
|
18
18
|
end
|
19
19
|
|
20
20
|
module SyntaxTree
|
21
|
-
class
|
21
|
+
class << self
|
22
22
|
alias_method :original_parse, :parse
|
23
23
|
|
24
|
-
def parse
|
25
|
-
node = original_parse
|
24
|
+
def parse(source)
|
25
|
+
node = original_parse(source)
|
26
26
|
node.set_parent_node_and_source(source)
|
27
27
|
node
|
28
28
|
end
|
@@ -50,19 +50,8 @@ module SyntaxTree
|
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
53
|
-
def siblings
|
54
|
-
child_nodes = parent_node.deconstruct_keys([]).except(:location, :comments).values
|
55
|
-
if child_nodes.is_a?(Array) && child_nodes.size == 1 && child_nodes.first.is_a?(Array)
|
56
|
-
index = child_nodes.first.index(self)
|
57
|
-
return child_nodes.first[index + 1...]
|
58
|
-
end
|
59
|
-
|
60
|
-
index = child_nodes.index(self)
|
61
|
-
child_nodes[index + 1...]
|
62
|
-
end
|
63
|
-
|
64
53
|
def keys
|
65
|
-
if
|
54
|
+
if respond_to_assocs?
|
66
55
|
assocs.map(&:key)
|
67
56
|
else
|
68
57
|
raise MethodNotSupported, "keys is not supported for #{self}"
|
@@ -70,7 +59,7 @@ module SyntaxTree
|
|
70
59
|
end
|
71
60
|
|
72
61
|
def values
|
73
|
-
if
|
62
|
+
if respond_to_assocs?
|
74
63
|
assocs.map(&:value)
|
75
64
|
else
|
76
65
|
raise MethodNotSupported, "values is not supported for #{self}"
|
@@ -78,7 +67,7 @@ module SyntaxTree
|
|
78
67
|
end
|
79
68
|
|
80
69
|
def hash_assoc(key)
|
81
|
-
if
|
70
|
+
if respond_to_assocs?
|
82
71
|
assocs.find { |assoc_node| assoc_node.key.to_value == key }
|
83
72
|
else
|
84
73
|
raise MethodNotSupported, "hash_assoc is not supported for #{self}"
|
@@ -86,7 +75,7 @@ module SyntaxTree
|
|
86
75
|
end
|
87
76
|
|
88
77
|
def hash_value(key)
|
89
|
-
if
|
78
|
+
if respond_to_assocs?
|
90
79
|
assocs.find { |assoc_node| assoc_node.key.to_value == key }&.value
|
91
80
|
else
|
92
81
|
raise MethodNotSupported, "hash_value is not supported for #{self}"
|
@@ -120,27 +109,6 @@ module SyntaxTree
|
|
120
109
|
source[location.start_char...location.end_char]
|
121
110
|
end
|
122
111
|
|
123
|
-
# Convert node to a hash, so that it can be converted to a json.
|
124
|
-
def to_hash
|
125
|
-
result = { node_type: self.class.name.split('::').last }
|
126
|
-
unless deconstruct_keys([]).empty?
|
127
|
-
deconstruct_keys([]).each do |key, value|
|
128
|
-
result[key] =
|
129
|
-
case value
|
130
|
-
when Array
|
131
|
-
value.map { |v| v.respond_to?(:to_hash) ? v.to_hash : v }
|
132
|
-
when SyntaxTree::Node, SyntaxTree::Location
|
133
|
-
value.to_hash
|
134
|
-
else
|
135
|
-
value
|
136
|
-
end
|
137
|
-
end
|
138
|
-
else
|
139
|
-
result[:children] = children.map { |c| c.respond_to?(:to_hash) ? c.to_hash : c }
|
140
|
-
end
|
141
|
-
result
|
142
|
-
end
|
143
|
-
|
144
112
|
# Respond key value and source for hash node
|
145
113
|
def method_missing(method_name, *args, &block)
|
146
114
|
return super unless respond_to_assocs?
|
@@ -187,17 +155,4 @@ module SyntaxTree
|
|
187
155
|
assoc_key.end_with?(':') ? assoc_key == "#{key}:" : assoc_key == key
|
188
156
|
end
|
189
157
|
end
|
190
|
-
|
191
|
-
class Location
|
192
|
-
def to_hash
|
193
|
-
{
|
194
|
-
start_line: start_line,
|
195
|
-
start_char: start_char,
|
196
|
-
start_column: start_column,
|
197
|
-
end_line: end_line,
|
198
|
-
end_char: end_char,
|
199
|
-
end_column: end_column,
|
200
|
-
}
|
201
|
-
end
|
202
|
-
end
|
203
158
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: syntax_tree_ext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Huang
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-02-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: syntax_tree
|
@@ -61,7 +61,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: '0'
|
63
63
|
requirements: []
|
64
|
-
rubygems_version: 3.
|
64
|
+
rubygems_version: 3.5.3
|
65
65
|
signing_key:
|
66
66
|
specification_version: 4
|
67
67
|
summary: extend syntax_tree
|