masamune-ast 1.1.3 → 1.1.4
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/Gemfile.lock +1 -1
- data/README.md +36 -3
- data/lib/masamune/abstract_syntax_tree/nodes/blocks/brace_block.rb +13 -0
- data/lib/masamune/abstract_syntax_tree/nodes/blocks/do_block.rb +13 -0
- data/lib/masamune/abstract_syntax_tree/{program.rb → nodes/program.rb} +1 -1
- data/lib/masamune/abstract_syntax_tree/{do_block.rb → nodes/support_nodes/block.rb} +3 -4
- data/lib/masamune/abstract_syntax_tree/nodes/support_nodes/comment.rb +25 -0
- data/lib/masamune/abstract_syntax_tree.rb +68 -29
- data/lib/masamune/slasher.rb +3 -2
- data/lib/masamune/version.rb +1 -1
- data/lib/masamune.rb +18 -16
- metadata +19 -17
- data/lib/masamune/abstract_syntax_tree/brace_block.rb +0 -19
- /data/lib/masamune/abstract_syntax_tree/{assign.rb → nodes/assign.rb} +0 -0
- /data/lib/masamune/abstract_syntax_tree/{call.rb → nodes/call.rb} +0 -0
- /data/lib/masamune/abstract_syntax_tree/{def.rb → nodes/def.rb} +0 -0
- /data/lib/masamune/abstract_syntax_tree/{params.rb → nodes/params.rb} +0 -0
- /data/lib/masamune/abstract_syntax_tree/{string_content.rb → nodes/string_content.rb} +0 -0
- /data/lib/masamune/abstract_syntax_tree/{symbol.rb → nodes/symbol.rb} +0 -0
- /data/lib/masamune/abstract_syntax_tree/{dyna_symbol.rb → nodes/symbols/dyna_symbol.rb} +0 -0
- /data/lib/masamune/abstract_syntax_tree/{symbol_literal.rb → nodes/symbols/symbol_literal.rb} +0 -0
- /data/lib/masamune/abstract_syntax_tree/{block_var.rb → nodes/variables/block_var.rb} +0 -0
- /data/lib/masamune/abstract_syntax_tree/{var_field.rb → nodes/variables/var_field.rb} +0 -0
- /data/lib/masamune/abstract_syntax_tree/{var_ref.rb → nodes/variables/var_ref.rb} +0 -0
- /data/lib/masamune/abstract_syntax_tree/{vcall.rb → nodes/vcall.rb} +0 -0
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 34d1bcf1f5fc587393f5ded22b65afb26d64217253dcea0d83ea483574988326
         | 
| 4 | 
            +
              data.tar.gz: 21f726e99d53494fb50c08012962156245a37920425fae2ab338946d463f2721
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 2cca246c5770392976a5b9b9a577ac90a7363c8972bbf954f76493b13dfebbc16e3c3eeb3230238e348fa77f11accadf326fb774d11a40d03aaf172e15f9a946
         | 
| 7 | 
            +
              data.tar.gz: 9da6db975cdd75e0a3fc57056bcb2908054a54f90da996660d4fca46e967e64aa5431a78e118b8a264ca4749f421fc7dc667626da5b6e28b7d724656d7bca241
         | 
    
        data/Gemfile.lock
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -33,7 +33,7 @@ code = <<~CODE | |
| 33 33 | 
             
            CODE
         | 
| 34 34 |  | 
| 35 35 | 
             
            msmn = Masamune::AbstractSyntaxTree.new(code)
         | 
| 36 | 
            -
            msmn.replace(type: : | 
| 36 | 
            +
            msmn.replace(type: :variable, old_token: "n", new_token: "foo")
         | 
| 37 37 |  | 
| 38 38 | 
             
            # This will produce the following code in string form.
         | 
| 39 39 | 
             
            10.times do |foo|
         | 
| @@ -88,9 +88,9 @@ CODE | |
| 88 88 | 
             
            msmn = Masamune::AbstractSyntaxTree.new(code)
         | 
| 89 89 |  | 
| 90 90 | 
             
            msmn.all_methods
         | 
| 91 | 
            -
            #=> [{:position=>[ | 
| 92 | 
            -
            #=> {:position=>[2, 4], :token=>"sum"},
         | 
| 91 | 
            +
            #=> [{:position=>[2, 4], :token=>"sum"},
         | 
| 93 92 | 
             
            #=> {:position=>[2, 8], :token=>"times"},
         | 
| 93 | 
            +
            #=> {:position=>[6, 4], :token=>"foo"},
         | 
| 94 94 | 
             
            #=> {:position=>[8, 0], :token=>"foo"},
         | 
| 95 95 | 
             
            #=> {:position=>[9, 0], :token=>"foo"}]
         | 
| 96 96 |  | 
| @@ -104,6 +104,39 @@ msmn.method_definitions | |
| 104 104 | 
             
            #=> [{:position=>[6, 4], :token=>"foo"}]
         | 
| 105 105 | 
             
            ```
         | 
| 106 106 |  | 
| 107 | 
            +
            You can also return the node classes themselves and get the data from there:
         | 
| 108 | 
            +
            ```ruby
         | 
| 109 | 
            +
            code = <<~CODE
         | 
| 110 | 
            +
              "ruby"
         | 
| 111 | 
            +
              "rails"
         | 
| 112 | 
            +
            CODE
         | 
| 113 | 
            +
             | 
| 114 | 
            +
            msmn = Masamune::AbstractSyntaxTree.new(code)
         | 
| 115 | 
            +
            msmn.strings(result_type: :nodes)
         | 
| 116 | 
            +
            #=> [#<Masamune::AbstractSyntaxTree::StringContent:0x00007f6f7c9a6850
         | 
| 117 | 
            +
            #=>  @ast_id=1440,
         | 
| 118 | 
            +
            #=>  @contents=[:string_content, [:@tstring_content, "ruby", [1, 1]]],
         | 
| 119 | 
            +
            #=>  @data_nodes=
         | 
| 120 | 
            +
            #=>   [#<Masamune::AbstractSyntaxTree::DataNode:0x00007f6f7c9a6828
         | 
| 121 | 
            +
            #=>     @ast_id=1440,
         | 
| 122 | 
            +
            #=>     @contents=[:@tstring_content, "ruby", [1, 1]],
         | 
| 123 | 
            +
            #=>     @data_nodes=nil,
         | 
| 124 | 
            +
            #=>     @line_position=[1, 1],
         | 
| 125 | 
            +
            #=>     @token="ruby",
         | 
| 126 | 
            +
            #=>     @type=:@tstring_content>]>,
         | 
| 127 | 
            +
            #=> #<Masamune::AbstractSyntaxTree::StringContent:0x00007f6f7c9a5630
         | 
| 128 | 
            +
            #=>  @ast_id=1440,
         | 
| 129 | 
            +
            #=>  @contents=[:string_content, [:@tstring_content, "rails", [2, 1]]],
         | 
| 130 | 
            +
            #=>  @data_nodes=
         | 
| 131 | 
            +
            #=>   [#<Masamune::AbstractSyntaxTree::DataNode:0x00007f6f7c9a5608
         | 
| 132 | 
            +
            #=>     @ast_id=1440,
         | 
| 133 | 
            +
            #=>     @contents=[:@tstring_content, "rails", [2, 1]],
         | 
| 134 | 
            +
            #=>     @data_nodes=nil,
         | 
| 135 | 
            +
            #=>     @line_position=[2, 1],
         | 
| 136 | 
            +
            #=>     @token="rails",
         | 
| 137 | 
            +
            #=>     @type=:@tstring_content>]>]
         | 
| 138 | 
            +
            ```
         | 
| 139 | 
            +
             | 
| 107 140 | 
             
            In some cases, it can be easier to look at the given lex nodes to analyze your source code since you can easily see the index and the line position it's on:
         | 
| 108 141 | 
             
            ```ruby
         | 
| 109 142 | 
             
            msmn.lex_nodes
         | 
| @@ -1,10 +1,9 @@ | |
| 1 | 
            -
            #  | 
| 1 | 
            +
            # DoBlock and BraceBlock share some of
         | 
| 2 | 
            +
            # the same logic, so we share that here.
         | 
| 2 3 |  | 
| 3 4 | 
             
            module Masamune
         | 
| 4 5 | 
             
              class AbstractSyntaxTree
         | 
| 5 | 
            -
                class  | 
| 6 | 
            -
                  attr_accessor :ast_id
         | 
| 7 | 
            -
             | 
| 6 | 
            +
                class Block < Node
         | 
| 8 7 | 
             
                  def initialize(contents, ast_id)
         | 
| 9 8 | 
             
                    super
         | 
| 10 9 | 
             
                  end
         | 
| @@ -0,0 +1,25 @@ | |
| 1 | 
            +
            # In the abstract syntax tree created by Ripper.sexp,
         | 
| 2 | 
            +
            # the type for comments is :void_stmt, and it doesn't have
         | 
| 3 | 
            +
            # a data node within it either. This means that the text
         | 
| 4 | 
            +
            # for the comment doesn't exist in the ast. It DOES exist
         | 
| 5 | 
            +
            # in LexNode though, so we grab from them there instead.
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            module Masamune
         | 
| 8 | 
            +
              class AbstractSyntaxTree
         | 
| 9 | 
            +
                class Comment < Node
         | 
| 10 | 
            +
                  def initialize(contents, ast_id)
         | 
| 11 | 
            +
                    super
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                    # Since this is techincally supposed to be a :void_stmt
         | 
| 14 | 
            +
                    # in this ast, we just leave this as nil.
         | 
| 15 | 
            +
                    @contents = nil
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  def extract_data_nodes
         | 
| 19 | 
            +
                    [
         | 
| 20 | 
            +
                      DataNode.new([contents.type, contents.token, contents.position], @ast_id)
         | 
| 21 | 
            +
                    ]
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
            end
         | 
| @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            module Masamune
         | 
| 2 2 | 
             
              class AbstractSyntaxTree
         | 
| 3 | 
            -
                attr_reader :code, :tree
         | 
| 3 | 
            +
                attr_reader :code, :tree, :comment_list
         | 
| 4 4 | 
             
                attr_accessor :node_list, :data_node_list, :lex_nodes
         | 
| 5 5 |  | 
| 6 6 | 
             
                def initialize(code)
         | 
| @@ -13,7 +13,12 @@ module Masamune | |
| 13 13 |  | 
| 14 14 | 
             
                  @node_list = []
         | 
| 15 15 | 
             
                  @data_node_list = []
         | 
| 16 | 
            +
                  @comment_list = []
         | 
| 16 17 | 
             
                  register_nodes(@tree)
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                  # Refer to Masamune::AbstractSyntaxTree::Comment
         | 
| 20 | 
            +
                  # to see why we register these separately.
         | 
| 21 | 
            +
                  register_comments
         | 
| 17 22 | 
             
                end
         | 
| 18 23 |  | 
| 19 24 | 
             
                def register_nodes(tree_node = self.tree)
         | 
| @@ -36,30 +41,43 @@ module Masamune | |
| 36 41 | 
             
                  end
         | 
| 37 42 | 
             
                end
         | 
| 38 43 |  | 
| 44 | 
            +
                def register_comments
         | 
| 45 | 
            +
                  comment_lex_nodes = @lex_nodes.select {|node| node.type == :comment}.flatten
         | 
| 46 | 
            +
                  @comment_list << comment_lex_nodes.map {|node| Comment.new(node, self.__id__)}
         | 
| 47 | 
            +
                  @comment_list.flatten!
         | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                # TODO: A lot of these methods have the same content,
         | 
| 51 | 
            +
                # so I want to come up with a way to refactor these.
         | 
| 52 | 
            +
             | 
| 39 53 | 
             
                # TODO: Add block_params: true to the arguments.
         | 
| 40 | 
            -
                def variables(name: nil)
         | 
| 54 | 
            +
                def variables(name: nil, result_type: Hash)
         | 
| 41 55 | 
             
                  var_classes = [
         | 
| 42 56 | 
             
                    :var_field,
         | 
| 43 57 | 
             
                    :var_ref,
         | 
| 44 58 | 
             
                    :params
         | 
| 45 59 | 
             
                  ].map {|type| get_node_class(type)}
         | 
| 46 | 
            -
                  find_nodes(var_classes, token: name)
         | 
| 60 | 
            +
                  results = find_nodes(var_classes, token: name, result_type: result_type)
         | 
| 61 | 
            +
                  order_results(results)
         | 
| 47 62 | 
             
                end
         | 
| 48 63 |  | 
| 49 | 
            -
                def strings(content: nil)
         | 
| 50 | 
            -
                  find_nodes(get_node_class(:string_content), token: content)
         | 
| 64 | 
            +
                def strings(content: nil, result_type: Hash)
         | 
| 65 | 
            +
                  results = find_nodes(get_node_class(:string_content), token: content, result_type: result_type)
         | 
| 66 | 
            +
                  order_results(results)
         | 
| 51 67 | 
             
                end
         | 
| 52 68 |  | 
| 53 | 
            -
                def method_definitions(name: nil)
         | 
| 54 | 
            -
                  find_nodes(get_node_class(:def), token: name)
         | 
| 69 | 
            +
                def method_definitions(name: nil, result_type: Hash)
         | 
| 70 | 
            +
                  results = find_nodes(get_node_class(:def), token: name, result_type: result_type)
         | 
| 71 | 
            +
                  order_results(results)
         | 
| 55 72 | 
             
                end
         | 
| 56 73 |  | 
| 57 | 
            -
                def method_calls(name: nil)
         | 
| 74 | 
            +
                def method_calls(name: nil, result_type: Hash)
         | 
| 58 75 | 
             
                  method_classes = [
         | 
| 59 76 | 
             
                    :vcall,
         | 
| 60 77 | 
             
                    :call
         | 
| 61 78 | 
             
                  ].map {|type| get_node_class(type)}
         | 
| 62 | 
            -
                  find_nodes(method_classes, token: name)
         | 
| 79 | 
            +
                  results = find_nodes(method_classes, token: name, result_type: result_type)
         | 
| 80 | 
            +
                  order_results(results)
         | 
| 63 81 | 
             
                end
         | 
| 64 82 |  | 
| 65 83 | 
             
                # TODO
         | 
| @@ -70,49 +88,56 @@ module Masamune | |
| 70 88 | 
             
                def brace_block_params
         | 
| 71 89 | 
             
                end
         | 
| 72 90 |  | 
| 73 | 
            -
                def symbols(content: nil)
         | 
| 74 | 
            -
                  symbol_literals + string_symbols
         | 
| 91 | 
            +
                def symbols(content: nil, result_type: Hash)
         | 
| 92 | 
            +
                  results = symbol_literals(content: content, result_type: result_type) + string_symbols(content: content, result_type: result_type)
         | 
| 93 | 
            +
                  order_results(results)
         | 
| 75 94 | 
             
                end
         | 
| 76 95 |  | 
| 77 | 
            -
                def symbol_literals(content: nil)
         | 
| 78 | 
            -
                  find_nodes(get_node_class(:symbol_literal), token: content)
         | 
| 96 | 
            +
                def symbol_literals(content: nil, result_type: Hash)
         | 
| 97 | 
            +
                  results = find_nodes(get_node_class(:symbol_literal), token: content, result_type: result_type)
         | 
| 98 | 
            +
                  order_results(results)
         | 
| 79 99 | 
             
                end
         | 
| 80 100 |  | 
| 81 | 
            -
                def string_symbols(content: nil)
         | 
| 82 | 
            -
                  find_nodes(get_node_class(:dyna_symbol), token: content)
         | 
| 101 | 
            +
                def string_symbols(content: nil, result_type: Hash)
         | 
| 102 | 
            +
                  results = find_nodes(get_node_class(:dyna_symbol), token: content, result_type: result_type)
         | 
| 103 | 
            +
                  order_results(results)
         | 
| 83 104 | 
             
                end
         | 
| 84 105 |  | 
| 85 | 
            -
                 | 
| 86 | 
            -
             | 
| 87 | 
            -
             | 
| 88 | 
            -
                  comments = @lex_nodes.select {|node| node.type == :comment}
         | 
| 89 | 
            -
                  comments.select {|comment| comment.token == content} if content
         | 
| 90 | 
            -
                  comments.map {|comment| {position: comment.position, token: comment.token}}
         | 
| 106 | 
            +
                def comments(content: nil, result_type: Hash)
         | 
| 107 | 
            +
                  results = find_nodes(get_node_class(:comment), token: content, result_type: result_type)
         | 
| 108 | 
            +
                  order_results(results)
         | 
| 91 109 | 
             
                end
         | 
| 92 110 |  | 
| 93 | 
            -
                def all_methods
         | 
| 94 | 
            -
                  method_definitions + method_calls
         | 
| 111 | 
            +
                def all_methods(name: nil, result_type: Hash)
         | 
| 112 | 
            +
                  results = method_definitions(name: name, result_type: result_type) + method_calls(name: name, result_type: result_type)
         | 
| 113 | 
            +
                  order_results(results)
         | 
| 95 114 | 
             
                end
         | 
| 96 115 |  | 
| 97 | 
            -
                def block_params
         | 
| 116 | 
            +
                def block_params(content: nil, result_type: Hash)
         | 
| 98 117 | 
             
                  # TODO: do_block_params + brace_block_params
         | 
| 99 | 
            -
                  find_nodes(get_node_class(:params))
         | 
| 118 | 
            +
                  results = find_nodes(get_node_class(:params), token: content, result_type: result_type)
         | 
| 119 | 
            +
                  order_results(results)
         | 
| 100 120 | 
             
                end
         | 
| 101 121 |  | 
| 102 | 
            -
                 | 
| 103 | 
            -
                def find_nodes(token_classes, token: nil)
         | 
| 122 | 
            +
                def find_nodes(token_classes, token: nil, result_type: Hash)
         | 
| 104 123 | 
             
                  # Ensure the classes are in an array
         | 
| 105 124 | 
             
                  token_classes = [token_classes].flatten
         | 
| 106 125 |  | 
| 107 126 | 
             
                  nodes = []
         | 
| 108 127 | 
             
                  token_classes.each do |klass|
         | 
| 109 | 
            -
                     | 
| 128 | 
            +
                    if klass == Masamune::AbstractSyntaxTree::Comment
         | 
| 129 | 
            +
                      nodes = @comment_list.dup
         | 
| 130 | 
            +
                    else
         | 
| 131 | 
            +
                      nodes << @node_list.select {|node| node.class == klass}
         | 
| 132 | 
            +
                    end
         | 
| 110 133 | 
             
                  end
         | 
| 111 134 |  | 
| 112 135 | 
             
                  # Searching for multiple classes will yield multi-dimensional arrays,
         | 
| 113 136 | 
             
                  # so we ensure everything is flattened out before moving forward.
         | 
| 114 137 | 
             
                  nodes.flatten!
         | 
| 115 138 |  | 
| 139 | 
            +
                  return nodes if result_type == :nodes
         | 
| 140 | 
            +
             | 
| 116 141 | 
             
                  if token
         | 
| 117 142 | 
             
                    # TODO: This most likely shouldn't be `node.data_nodes.first`.
         | 
| 118 143 | 
             
                    # There are probably more data_nodes we need to check depending on the node class.
         | 
| @@ -130,7 +155,10 @@ module Masamune | |
| 130 155 | 
             
                    end
         | 
| 131 156 | 
             
                  end
         | 
| 132 157 |  | 
| 133 | 
            -
                   | 
| 158 | 
            +
                  # Only order the information if we're returning hashes.
         | 
| 159 | 
            +
                  # TODO: We might want to change the placement of order_results_by_position
         | 
| 160 | 
            +
                  # if the operation is being done against hashes and not data nodes.
         | 
| 161 | 
            +
                  nodes.first.class.is_a?(Hash) ? DataNode.order_results_by_position(final_result) : final_result
         | 
| 134 162 | 
             
                end
         | 
| 135 163 |  | 
| 136 164 | 
             
                def replace(type:, old_token:, new_token:)
         | 
| @@ -154,5 +182,16 @@ module Masamune | |
| 154 182 | 
             
                    Node
         | 
| 155 183 | 
             
                  end
         | 
| 156 184 | 
             
                end
         | 
| 185 | 
            +
             | 
| 186 | 
            +
                # We only order results when they are a Hash.
         | 
| 187 | 
            +
                # The contents from the Hash are pulled from data nodes.
         | 
| 188 | 
            +
                # i.e. - {position: [4, 7], token: "project"}
         | 
| 189 | 
            +
                def order_results(results)
         | 
| 190 | 
            +
                  if results.first.is_a?(Hash)
         | 
| 191 | 
            +
                    DataNode.order_results_by_position(results)
         | 
| 192 | 
            +
                  else
         | 
| 193 | 
            +
                    results
         | 
| 194 | 
            +
                  end
         | 
| 195 | 
            +
                end
         | 
| 157 196 | 
             
              end
         | 
| 158 197 | 
             
            end
         | 
    
        data/lib/masamune/slasher.rb
    CHANGED
    
    | @@ -3,8 +3,9 @@ module Masamune | |
| 3 3 | 
             
                def self.replace(type:, old_token:, new_token:, code:, ast:)
         | 
| 4 4 | 
             
                  # `type` can either be a method from the ast like `method_definitions`,
         | 
| 5 5 | 
             
                  # or it can be a list of Masamune::AbstractSyntaxTree node classes.
         | 
| 6 | 
            -
                  position_and_token_ary = if type.is_a?(Symbol) | 
| 7 | 
            -
                     | 
| 6 | 
            +
                  position_and_token_ary = if type.is_a?(Symbol)
         | 
| 7 | 
            +
                    type_to_method = type.to_s.pluralize.to_sym
         | 
| 8 | 
            +
                    ast.send(type_to_method)
         | 
| 8 9 | 
             
                  elsif type.is_a?(Array)
         | 
| 9 10 | 
             
                    type.map {|klass| ast.find_nodes(klass)}.flatten
         | 
| 10 11 | 
             
                  end
         | 
    
        data/lib/masamune/version.rb
    CHANGED
    
    
    
        data/lib/masamune.rb
    CHANGED
    
    | @@ -9,22 +9,24 @@ require "masamune/abstract_syntax_tree" | |
| 9 9 | 
             
            require "masamune/abstract_syntax_tree/node"
         | 
| 10 10 | 
             
            require "masamune/abstract_syntax_tree/data_node"
         | 
| 11 11 |  | 
| 12 | 
            -
             | 
| 13 | 
            -
            require "masamune/abstract_syntax_tree/ | 
| 14 | 
            -
             | 
| 15 | 
            -
            require "masamune/abstract_syntax_tree/brace_block"
         | 
| 16 | 
            -
            require "masamune/abstract_syntax_tree/ | 
| 17 | 
            -
            require "masamune/abstract_syntax_tree/ | 
| 18 | 
            -
            require "masamune/abstract_syntax_tree/ | 
| 19 | 
            -
            require "masamune/abstract_syntax_tree/ | 
| 20 | 
            -
            require "masamune/abstract_syntax_tree/ | 
| 21 | 
            -
            require "masamune/abstract_syntax_tree/ | 
| 22 | 
            -
            require "masamune/abstract_syntax_tree/ | 
| 23 | 
            -
            require "masamune/abstract_syntax_tree/ | 
| 24 | 
            -
            require "masamune/abstract_syntax_tree/ | 
| 25 | 
            -
            require "masamune/abstract_syntax_tree/ | 
| 26 | 
            -
            require "masamune/abstract_syntax_tree/ | 
| 27 | 
            -
            require "masamune/abstract_syntax_tree/ | 
| 12 | 
            +
            require "masamune/abstract_syntax_tree/nodes/support_nodes/block"
         | 
| 13 | 
            +
            require "masamune/abstract_syntax_tree/nodes/support_nodes/comment"
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            require "masamune/abstract_syntax_tree/nodes/blocks/brace_block"
         | 
| 16 | 
            +
            require "masamune/abstract_syntax_tree/nodes/blocks/do_block"
         | 
| 17 | 
            +
            require "masamune/abstract_syntax_tree/nodes/symbols/dyna_symbol"
         | 
| 18 | 
            +
            require "masamune/abstract_syntax_tree/nodes/symbols/symbol_literal"
         | 
| 19 | 
            +
            require "masamune/abstract_syntax_tree/nodes/variables/block_var"
         | 
| 20 | 
            +
            require "masamune/abstract_syntax_tree/nodes/variables/var_field"
         | 
| 21 | 
            +
            require "masamune/abstract_syntax_tree/nodes/variables/var_ref"
         | 
| 22 | 
            +
            require "masamune/abstract_syntax_tree/nodes/assign"
         | 
| 23 | 
            +
            require "masamune/abstract_syntax_tree/nodes/call"
         | 
| 24 | 
            +
            require "masamune/abstract_syntax_tree/nodes/def"
         | 
| 25 | 
            +
            require "masamune/abstract_syntax_tree/nodes/params"
         | 
| 26 | 
            +
            require "masamune/abstract_syntax_tree/nodes/program"
         | 
| 27 | 
            +
            require "masamune/abstract_syntax_tree/nodes/string_content"
         | 
| 28 | 
            +
            require "masamune/abstract_syntax_tree/nodes/symbol"
         | 
| 29 | 
            +
            require "masamune/abstract_syntax_tree/nodes/vcall"
         | 
| 28 30 |  | 
| 29 31 | 
             
            require "pp"
         | 
| 30 32 | 
             
            require "pry"
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: masamune-ast
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1.1. | 
| 4 | 
            +
              version: 1.1.4
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Gabriel Zayas
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2023-06- | 
| 11 | 
            +
            date: 2023-06-10 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: activesupport
         | 
| @@ -40,23 +40,25 @@ files: | |
| 40 40 | 
             
            - Rakefile
         | 
| 41 41 | 
             
            - lib/masamune.rb
         | 
| 42 42 | 
             
            - lib/masamune/abstract_syntax_tree.rb
         | 
| 43 | 
            -
            - lib/masamune/abstract_syntax_tree/assign.rb
         | 
| 44 | 
            -
            - lib/masamune/abstract_syntax_tree/block_var.rb
         | 
| 45 | 
            -
            - lib/masamune/abstract_syntax_tree/brace_block.rb
         | 
| 46 | 
            -
            - lib/masamune/abstract_syntax_tree/call.rb
         | 
| 47 43 | 
             
            - lib/masamune/abstract_syntax_tree/data_node.rb
         | 
| 48 | 
            -
            - lib/masamune/abstract_syntax_tree/def.rb
         | 
| 49 | 
            -
            - lib/masamune/abstract_syntax_tree/do_block.rb
         | 
| 50 | 
            -
            - lib/masamune/abstract_syntax_tree/dyna_symbol.rb
         | 
| 51 44 | 
             
            - lib/masamune/abstract_syntax_tree/node.rb
         | 
| 52 | 
            -
            - lib/masamune/abstract_syntax_tree/ | 
| 53 | 
            -
            - lib/masamune/abstract_syntax_tree/ | 
| 54 | 
            -
            - lib/masamune/abstract_syntax_tree/ | 
| 55 | 
            -
            - lib/masamune/abstract_syntax_tree/ | 
| 56 | 
            -
            - lib/masamune/abstract_syntax_tree/ | 
| 57 | 
            -
            - lib/masamune/abstract_syntax_tree/ | 
| 58 | 
            -
            - lib/masamune/abstract_syntax_tree/ | 
| 59 | 
            -
            - lib/masamune/abstract_syntax_tree/ | 
| 45 | 
            +
            - lib/masamune/abstract_syntax_tree/nodes/assign.rb
         | 
| 46 | 
            +
            - lib/masamune/abstract_syntax_tree/nodes/blocks/brace_block.rb
         | 
| 47 | 
            +
            - lib/masamune/abstract_syntax_tree/nodes/blocks/do_block.rb
         | 
| 48 | 
            +
            - lib/masamune/abstract_syntax_tree/nodes/call.rb
         | 
| 49 | 
            +
            - lib/masamune/abstract_syntax_tree/nodes/def.rb
         | 
| 50 | 
            +
            - lib/masamune/abstract_syntax_tree/nodes/params.rb
         | 
| 51 | 
            +
            - lib/masamune/abstract_syntax_tree/nodes/program.rb
         | 
| 52 | 
            +
            - lib/masamune/abstract_syntax_tree/nodes/string_content.rb
         | 
| 53 | 
            +
            - lib/masamune/abstract_syntax_tree/nodes/support_nodes/block.rb
         | 
| 54 | 
            +
            - lib/masamune/abstract_syntax_tree/nodes/support_nodes/comment.rb
         | 
| 55 | 
            +
            - lib/masamune/abstract_syntax_tree/nodes/symbol.rb
         | 
| 56 | 
            +
            - lib/masamune/abstract_syntax_tree/nodes/symbols/dyna_symbol.rb
         | 
| 57 | 
            +
            - lib/masamune/abstract_syntax_tree/nodes/symbols/symbol_literal.rb
         | 
| 58 | 
            +
            - lib/masamune/abstract_syntax_tree/nodes/variables/block_var.rb
         | 
| 59 | 
            +
            - lib/masamune/abstract_syntax_tree/nodes/variables/var_field.rb
         | 
| 60 | 
            +
            - lib/masamune/abstract_syntax_tree/nodes/variables/var_ref.rb
         | 
| 61 | 
            +
            - lib/masamune/abstract_syntax_tree/nodes/vcall.rb
         | 
| 60 62 | 
             
            - lib/masamune/lex_node.rb
         | 
| 61 63 | 
             
            - lib/masamune/slasher.rb
         | 
| 62 64 | 
             
            - lib/masamune/version.rb
         | 
| @@ -1,19 +0,0 @@ | |
| 1 | 
            -
            # TODO: Add description.
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            module Masamune
         | 
| 4 | 
            -
              class AbstractSyntaxTree
         | 
| 5 | 
            -
                class BraceBlock < Node
         | 
| 6 | 
            -
                  attr_accessor :ast_id
         | 
| 7 | 
            -
             | 
| 8 | 
            -
                  def initialize(contents, ast_id)
         | 
| 9 | 
            -
                    super
         | 
| 10 | 
            -
                  end
         | 
| 11 | 
            -
             | 
| 12 | 
            -
                  def params
         | 
| 13 | 
            -
                    # This node should exist already, so we search for it in the ast object.
         | 
| 14 | 
            -
                    block_var = BlockVar.new(contents[1], ast_id)
         | 
| 15 | 
            -
                    ast.node_list.find {|node| node.contents == block_var.contents}
         | 
| 16 | 
            -
                  end
         | 
| 17 | 
            -
                end
         | 
| 18 | 
            -
              end
         | 
| 19 | 
            -
            end
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
    
        /data/lib/masamune/abstract_syntax_tree/{symbol_literal.rb → nodes/symbols/symbol_literal.rb}
    RENAMED
    
    | 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         |