prism_ext 0.1.0 → 0.2.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: d09f437a427a12d11ba67c28be50da7372493ad3a177938815c5b5abf065b5cf
4
- data.tar.gz: c2f18817e9862e578b3bbda235a7040d7b8526654888ae8f200a90fac00db0c3
3
+ metadata.gz: 695e9d8152060370e01e3f95624c4008015551a06ccd12c283e85e7a1bb59f11
4
+ data.tar.gz: a94e3ff7e5e9befb6500f44dc6b25b9c360e28f1356b6e17532842ffa58a7cae
5
5
  SHA512:
6
- metadata.gz: 6174bbad0ec343872a8f15d0953c09f8ab642476a8ed6c68161969df4aed8c786cebd6559ba6ae2b2e9fbf0bd897c0ee2a89e55e4f7bda6c952e85b5c85c9e8b
7
- data.tar.gz: f49dde3337f979b258633a07fa1825d286e029e474d9fd560203d2e74efd77258a76bcfd90f6fdbc1add4588c1f3e1bcd8430b8e7949bbbd23547d752a9da38e
6
+ metadata.gz: 04ec3cb586628e36ab5ec8ff22e9d8f20e5e9d17b2fae2291bb921fb81e679fa7ba28b3984d4a7064c22025d9bc93bf3665f0d248fb57cb15cbe60894e5b817a
7
+ data.tar.gz: c5a4534721f7a4d36737f77dcf901c0db0d90506bb94ee30dae9b247b89ce1a73303baa69428bc1a14ef15e10e2e88a0a8d3335adfa404bac4ca9784dd08b676
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 0.2.0 (2024-02-10)
4
+
5
+ * Set `parent_node` to `Prism::Node`.
6
+
3
7
  ## 0.1.0 (2024-02-10)
4
8
 
5
9
  * Add some helper methods to `Prism::Node`.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- prism_ext (0.1.0)
4
+ prism_ext (0.2.0)
5
5
  prism
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # PrismExt
2
2
 
3
- It adds some helpers to prism node.
3
+ It adds `parent_node` to the `Prism::Node`.
4
+
5
+ It also adds some helpers to prism node.
4
6
 
5
7
  ```ruby
6
8
  # node is a HashNode
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PrismExt
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/prism_ext.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "prism_ext/version"
4
+
4
5
  require 'prism'
5
6
 
6
7
  module PrismExt
@@ -9,7 +10,37 @@ module PrismExt
9
10
  end
10
11
 
11
12
  module Prism
13
+ class << self
14
+ alias_method :original_parse, :parse
15
+
16
+ def parse(source)
17
+ result = original_parse(source)
18
+ result.value.set_parent_node
19
+ result
20
+ end
21
+ end
22
+
12
23
  class Node
24
+ attr_accessor :parent_node
25
+
26
+ def set_parent_node
27
+ self.child_nodes.each do |child_node|
28
+ if child_node.is_a?(Array)
29
+ child_node.each do |child_child_node|
30
+ next unless child_child_node.is_a?(Node)
31
+
32
+ child_child_node.parent_node = self
33
+ child_child_node.set_parent_node
34
+ end
35
+ end
36
+
37
+ next unless child_node.is_a?(Node)
38
+
39
+ child_node.parent_node = self
40
+ child_node.set_parent_node
41
+ end
42
+ end
43
+
13
44
  def source
14
45
  location.instance_variable_get(:@source).source
15
46
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prism_ext
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Huang