Sha256: a5a2aa35f121122e79ec2aa50f07fd2befd2a61518d0a0d605b75ebc43fbcfea

Contents?: true

Size: 1.27 KB

Versions: 4

Compression:

Stored size: 1.27 KB

Contents

module Yoda
  module AST
    # Add query methods to search expected nodes from AST.
    # @see {Yoda::Parsing::Traverser::Matcher} for parameters of query methods.
    # @example
    #   ast.query(type: :if) # => returns a if node
    #   ast.query(name: :hoge) # => returns a node about an object with the name
    module Traversable
      # @param query [Hash] (See {Yoda::Parsing::Traverser::Matcher.new} for detailed parameters)
      # @return [Vnode, nil]
      def query(**query)
        Parsing::Traverser.new(self).query(**query)&.node
      end

      # @param query [Hash] (See {Yoda::Parsing::Traverser::Matcher.new} for detailed parameters)
      # @return [Parsing::Traverser::ResultSet]
      def query_all(**query)
        Parsing::Traverser.new(self).query(**query)
      end

      # @param query [Hash] (See {Yoda::Parsing::Traverser::Matcher.new} for detailed parameters)
      # @return [Vnode, nil]
      def query_ancestor(**query)
        Parsing::Traverser.new(self).query_ancestor(**query)&.node
      end

      # @param query [Hash] (See {Yoda::Parsing::Traverser::Matcher.new} for detailed parameters)
      # @return [Parsing::Traverser::ResultSet]
      def query_ancestors(**query)
        Parsing::Traverser.new(self).query_ancestors(**query)
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
yoda-language-server-0.10.1 lib/yoda/ast/traversable.rb
yoda-language-server-0.10.0 lib/yoda/ast/traversable.rb
yoda-language-server-0.9.0 lib/yoda/ast/traversable.rb
yoda-language-server-0.8.0 lib/yoda/ast/traversable.rb