prism_ext 0.1.0 → 0.2.0

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 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