syntax_tree_ext 0.3.1 → 0.4.1

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: c1db7c0430ae86be8cd79200e3764505f54175fc38359137fb1e2f74c337acef
4
- data.tar.gz: e5a2827ce03b9fbb54b61b3cc0a3e00116fc66fc870d19a64d66d2c77ba0e791
3
+ metadata.gz: f369f11506e5b0deee505fd45a2dc9528dcc949afbd3c251445976e74a5e1e34
4
+ data.tar.gz: d7c8c612139042547ea4a3b94e4b22d09776763a9a1abaa1f55a16857b56a94c
5
5
  SHA512:
6
- metadata.gz: 47ca6fe36cdef18f2b59189bb29fea107973ba8f41735b1c450de6d0ee307ce702d021f244a3509fa92e0659b4c4bc2b4a0c111d3aae969ca4173e8b85059d61
7
- data.tar.gz: f28d7ce55a092aa5bffb3ae5747cea2d99859ecd25662e8f1366ddae6ff578677bd2b4384222ed9b062b1485203ca6020fb98503278c8616c1d9eb0fc5387ae4
6
+ metadata.gz: ba91207069dff6049b134b310065ba6443834bbc43e9e0f1a161ff16d8e3d20d781df00364e9633cd71e07d870827ccedd15fa0eecd32e7a02fd82d89daea180
7
+ data.tar.gz: 054e6676cf631d02cc37f620d3bc5689463e38054217a972d0cd5108077ce8e852881e9b1995a3158eb4b9e930de3b3523ab757e0871f979df8bf95791765fb6
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 0.4.1 (2023-06-11)
4
+
5
+ * Support `const` for `to_value`
6
+
7
+ ## 0.4.0 (2023-06-08)
8
+
9
+ * Add `Syntax::Node#to_hash`
10
+
3
11
  ## 0.3.1 (2023-05-18)
4
12
 
5
13
  * Support `array` in `Node#to_value`
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- syntax_tree_ext (0.3.1)
4
+ syntax_tree_ext (0.4.1)
5
5
  syntax_tree
6
6
 
7
7
  GEM
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SyntaxTreeExt
4
- VERSION = "0.3.1"
4
+ VERSION = "0.4.1"
5
5
  end
@@ -52,7 +52,7 @@ module SyntaxTree
52
52
  value == 'true'
53
53
  when VarRef
54
54
  value.to_value
55
- when Label, TStringContent, Ident
55
+ when Const, Label, TStringContent, Ident
56
56
  value
57
57
  when ArrayLiteral
58
58
  contents.parts.map { |part| part.to_value }
@@ -65,6 +65,27 @@ module SyntaxTree
65
65
  source[location.start_char...location.end_char]
66
66
  end
67
67
 
68
+ # Convert node to a hash, so that it can be converted to a json.
69
+ def to_hash
70
+ result = { node_type: self.class.name.split('::').last }
71
+ unless deconstruct_keys([]).empty?
72
+ deconstruct_keys([]).each do |key, value|
73
+ result[key] =
74
+ case value
75
+ when Array
76
+ value.map { |v| v.respond_to?(:to_hash) ? v.to_hash : v }
77
+ when SyntaxTree::Node, SyntaxTree::Location
78
+ value.to_hash
79
+ else
80
+ value
81
+ end
82
+ end
83
+ else
84
+ result[:children] = children.map { |c| c.respond_to?(:to_hash) ? c.to_hash : c }
85
+ end
86
+ result
87
+ end
88
+
68
89
  # Respond key value and source for hash node
69
90
  def method_missing(method_name, *args, &block)
70
91
  return super unless respond_to_assocs?
@@ -111,4 +132,17 @@ module SyntaxTree
111
132
  assoc_key.end_with?(':') ? assoc_key == "#{key}:" : assoc_key == key
112
133
  end
113
134
  end
135
+
136
+ class Location
137
+ def to_hash
138
+ {
139
+ start_line: start_line,
140
+ start_char: start_char,
141
+ start_column: start_column,
142
+ end_line: end_line,
143
+ end_char: end_char,
144
+ end_column: end_column,
145
+ }
146
+ end
147
+ end
114
148
  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.3.1
4
+ version: 0.4.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: 2023-05-18 00:00:00.000000000 Z
11
+ date: 2023-06-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.4.10
64
+ rubygems_version: 3.4.13
65
65
  signing_key:
66
66
  specification_version: 4
67
67
  summary: extend syntax_tree