parser_node_ext 0.8.0 → 0.9.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 +4 -4
- data/CHANGELOG.md +4 -0
- data/Gemfile.lock +1 -1
- data/lib/parser_node_ext/version.rb +1 -1
- data/lib/parser_node_ext.rb +30 -5
- data/sig/parser_node_ext.rbs +3 -0
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 8fb070ea09b73310d3bb9acdcae0cbc06c6e3120b7d1bd69de94045c48cabcfa
         | 
| 4 | 
            +
              data.tar.gz: 4014d1088f929cb56e5865b11500f58242263685ba64a140b29d9f9166fdeaf6
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 77c947f3bfc188aef814ec8214cf46af0d76d7aabe9c5c99af2c63c7838073bf9c8cd3bdae71e248238cb5c16690d71e91afefc9f23ce791284a46eac7957946
         | 
| 7 | 
            +
              data.tar.gz: 5afac291cda433af31d1965c023fcc0662cf07e6cdd6c80a9932b23f2851978b501b09fa0a61b128e325bc7eb714d1e5efb09024ac06c802bade0656715e01cf
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,5 +1,9 @@ | |
| 1 1 | 
             
            # CHANGELOG
         | 
| 2 2 |  | 
| 3 | 
            +
            ## 0.9.0 (2023-02-01)
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            * Support pattern match nodes, `case_match`, `in_pattern`, `hash_pattern`, `array_pattern`, `find_pattern`, `match_pattern`, `match_pattern_p`, `match_var`, `match_as`, `pin`, `match_rest`, `if_guard` and `unless_guard`
         | 
| 6 | 
            +
             | 
| 3 7 | 
             
            ## 0.8.0 (2023-01-30)
         | 
| 4 8 |  | 
| 5 9 | 
             
            * Support `numblock` node
         | 
    
        data/Gemfile.lock
    CHANGED
    
    
    
        data/lib/parser_node_ext.rb
    CHANGED
    
    | @@ -11,10 +11,13 @@ module ParserNodeExt | |
| 11 11 | 
             
              TYPE_CHILDREN = {
         | 
| 12 12 | 
             
                and: %i[left_value right_value],
         | 
| 13 13 | 
             
                arg: %i[name],
         | 
| 14 | 
            +
                array: %i[elements],
         | 
| 15 | 
            +
                array_pattern: %i[elements],
         | 
| 14 16 | 
             
                begin: %i[body],
         | 
| 15 17 | 
             
                block: %i[caller arguments body],
         | 
| 16 18 | 
             
                blockarg: %i[name],
         | 
| 17 19 | 
             
                case: %i[expression when_statements else_statement],
         | 
| 20 | 
            +
                case_match: %i[expression in_statements else_statement],
         | 
| 18 21 | 
             
                const: %i[parent_const name],
         | 
| 19 22 | 
             
                class: %i[name parent_class body],
         | 
| 20 23 | 
             
                csend: %i[receiver message arguments],
         | 
| @@ -24,27 +27,38 @@ module ParserNodeExt | |
| 24 27 | 
             
                defined?: %i[arguments],
         | 
| 25 28 | 
             
                defs: %i[self name arguments body],
         | 
| 26 29 | 
             
                false: [],
         | 
| 30 | 
            +
                find_pattern: %i[elements],
         | 
| 27 31 | 
             
                float: %i[value],
         | 
| 28 32 | 
             
                hash: %i[pairs],
         | 
| 33 | 
            +
                hash_pattern: %i[pairs],
         | 
| 29 34 | 
             
                if: %i[expression if_statement else_statement],
         | 
| 35 | 
            +
                if_guard: %i[expression],
         | 
| 30 36 | 
             
                int: %i[value],
         | 
| 37 | 
            +
                in_pattern: %i[expression guard body],
         | 
| 31 38 | 
             
                ivasgn: %i[left_value right_value],
         | 
| 32 39 | 
             
                ivar: %i[name],
         | 
| 33 40 | 
             
                lvar: %i[name],
         | 
| 34 41 | 
             
                lvasgn: %i[left_value right_value],
         | 
| 35 42 | 
             
                masgn: %i[left_value right_value],
         | 
| 43 | 
            +
                match_as: %i[key value],
         | 
| 44 | 
            +
                match_pattern: %i[left_value right_value],
         | 
| 45 | 
            +
                match_pattern_p: %i[left_value right_value],
         | 
| 46 | 
            +
                match_rest: %i[variable],
         | 
| 47 | 
            +
                match_var: %i[name],
         | 
| 36 48 | 
             
                module: %i[name body],
         | 
| 37 49 | 
             
                nil: [],
         | 
| 38 50 | 
             
                numblock: %i[caller arguments_count body],
         | 
| 39 51 | 
             
                or: %i[left_value right_value],
         | 
| 40 52 | 
             
                or_asgn: %i[left_value right_value],
         | 
| 41 53 | 
             
                pair: %i[key value],
         | 
| 54 | 
            +
                pin: %i[variable],
         | 
| 42 55 | 
             
                restarg: %i[name],
         | 
| 43 56 | 
             
                send: %i[receiver message arguments],
         | 
| 44 57 | 
             
                str: %i[value],
         | 
| 45 58 | 
             
                super: %i[arguments],
         | 
| 46 59 | 
             
                sym: %i[value],
         | 
| 47 60 | 
             
                true: [],
         | 
| 61 | 
            +
                unless_guard: %i[expression],
         | 
| 48 62 | 
             
                when: %i[expression body],
         | 
| 49 63 | 
             
                zsuper: []
         | 
| 50 64 | 
             
              }
         | 
| @@ -149,7 +163,7 @@ module ParserNodeExt | |
| 149 163 | 
             
                      return [] if children[1].nil?
         | 
| 150 164 |  | 
| 151 165 | 
             
                      :begin == children[1].type ? children[1].body : children[1..-1]
         | 
| 152 | 
            -
                    when :def, :block, :class, :module, :numblock
         | 
| 166 | 
            +
                    when :def, :block, :class, :module, :numblock, :in_pattern
         | 
| 153 167 | 
             
                      return [] if children[2].nil?
         | 
| 154 168 |  | 
| 155 169 | 
             
                      :begin == children[2].type ? children[2].body : children[2..-1]
         | 
| @@ -173,6 +187,17 @@ module ParserNodeExt | |
| 173 187 | 
             
                    end
         | 
| 174 188 | 
             
                  end
         | 
| 175 189 |  | 
| 190 | 
            +
                  # Get in statements of case_match node.
         | 
| 191 | 
            +
                  # @return [Array<Parser::AST::Node>] in statements of case node.
         | 
| 192 | 
            +
                  # @raise [MethodNotSupported] if calls on other node.
         | 
| 193 | 
            +
                  def in_statements
         | 
| 194 | 
            +
                    if :case_match == type
         | 
| 195 | 
            +
                      children[1...-1]
         | 
| 196 | 
            +
                    else
         | 
| 197 | 
            +
                      raise MethodNotSupported, "in_statements is not supported for #{self}"
         | 
| 198 | 
            +
                    end
         | 
| 199 | 
            +
                  end
         | 
| 200 | 
            +
             | 
| 176 201 | 
             
                  # Get else statement of case node.
         | 
| 177 202 | 
             
                  # @return [Parser::AST::Node] else statement of case node.
         | 
| 178 203 | 
             
                  # @raise [MethodNotSupported] if calls on other node.
         | 
| @@ -180,25 +205,25 @@ module ParserNodeExt | |
| 180 205 | 
             
                    children[-1]
         | 
| 181 206 | 
             
                  end
         | 
| 182 207 |  | 
| 183 | 
            -
                  # Get elements of array node.
         | 
| 208 | 
            +
                  # Get elements of :array and :array_pattern node.
         | 
| 184 209 | 
             
                  # @return [Array<Parser::AST::Node>] elements of array node.
         | 
| 185 210 | 
             
                  # @raise [MethodNotSupported] if calls on other node.
         | 
| 186 211 | 
             
                  def elements
         | 
| 187 | 
            -
                    if  | 
| 212 | 
            +
                    if %i[array array_pattern find_pattern].include?(type)
         | 
| 188 213 | 
             
                      children
         | 
| 189 214 | 
             
                    else
         | 
| 190 215 | 
             
                      raise MethodNotSupported, "elements is not supported for #{self}"
         | 
| 191 216 | 
             
                    end
         | 
| 192 217 | 
             
                  end
         | 
| 193 218 |  | 
| 194 | 
            -
                  # Get pairs of :hash node.
         | 
| 219 | 
            +
                  # Get pairs of :hash and :hash_pattern node.
         | 
| 195 220 | 
             
                  # @example
         | 
| 196 221 | 
             
                  #   node # s(:hash, s(:pair, s(:sym, :foo), s(:sym, :bar)), s(:pair, s(:str, "foo"), s(:str, "bar")))
         | 
| 197 222 | 
             
                  #   node.pairs # [s(:pair, s(:sym, :foo), s(:sym, :bar)), s(:pair, s(:str, "foo"), s(:str, "bar"))]
         | 
| 198 223 | 
             
                  # @return [Array<Parser::AST::Node>] pairs of node.
         | 
| 199 224 | 
             
                  # @raise [MethodNotSupported] if calls on other node.
         | 
| 200 225 | 
             
                  def pairs
         | 
| 201 | 
            -
                    if  | 
| 226 | 
            +
                    if %i[hash hash_pattern].include?(type)
         | 
| 202 227 | 
             
                      children
         | 
| 203 228 | 
             
                    else
         | 
| 204 229 | 
             
                      raise MethodNotSupported, "pairs is not supported for #{self}"
         | 
    
        data/sig/parser_node_ext.rbs
    CHANGED
    
    | @@ -10,7 +10,9 @@ module ParserNodeExt | |
| 10 10 | 
             
              def else_statement: () -> Parser::AST::Node
         | 
| 11 11 | 
             
              def expression: () -> Parser::AST::Node
         | 
| 12 12 | 
             
              def if_statement: () -> Parser::AST::Node
         | 
| 13 | 
            +
              def in_statements: () -> Array[Parser::AST::Node]
         | 
| 13 14 | 
             
              def key: () -> Parser::AST::Node
         | 
| 15 | 
            +
              def guard: () -> Parser::AST::Node
         | 
| 14 16 | 
             
              def left_value: () -> Parser::AST::Node | Symbol
         | 
| 15 17 | 
             
              def message: () -> Symbol
         | 
| 16 18 | 
             
              def name: () -> Parser::AST::Node | Symbol
         | 
| @@ -20,6 +22,7 @@ module ParserNodeExt | |
| 20 22 | 
             
              def right_value: () -> Parser::AST::Node
         | 
| 21 23 | 
             
              def self: () -> Parser::AST::Node
         | 
| 22 24 | 
             
              def value: () -> Parser::AST::Node
         | 
| 25 | 
            +
              def variable: () -> Parser::AST::Node
         | 
| 23 26 | 
             
              def when_statements: () -> Array[Parser::AST::Node]
         | 
| 24 27 |  | 
| 25 28 | 
             
              def to_hash: () -> Hash
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: parser_node_ext
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.9.0
         | 
| 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-01 | 
| 11 | 
            +
            date: 2023-02-01 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: parser
         |