class Yoda::Parsing::Scopes::Base
Base
class for wrapper classes of nodes which create lexical scopes. @abstract
Attributes
child_scopes[R]
@return [Array<Base>]
method_definitions[R]
@return [Array<MethodDefinition>]
node[R]
@return [::Parser::AST::Node]
parent[R]
@return [Namespace, nil]
Public Class Methods
new(node, parent = nil)
click to toggle source
@param node [::Parser::AST::Node] @param parent [Base, nil]
# File lib/yoda/parsing/scopes/base.rb, line 21 def initialize(node, parent = nil) fail ArgumentError, node unless node.is_a?(::Parser::AST::Node) fail ArgumentError, parent if parent && !parent.is_a?(Base) @node = node @parent = parent @method_definitions = [] @child_scopes = [] end
Public Instance Methods
ancestor_scopes()
click to toggle source
@return [Array<String>]
# File lib/yoda/parsing/scopes/base.rb, line 72 def ancestor_scopes [scope_name, *(parent ? parent.ancestor_scopes : [])] end
body_node()
click to toggle source
@abstract @return [::Parser::AST::Node]
# File lib/yoda/parsing/scopes/base.rb, line 38 def body_node fail NotImplementedError end
body_nodes()
click to toggle source
@abstract @return [Array<::Parser::AST::Node>]
# File lib/yoda/parsing/scopes/base.rb, line 32 def body_nodes fail NotImplementedError end
find_evaluation_root_scope(current_location)
click to toggle source
@param current_location [Location] @return [Namespace, nil]
# File lib/yoda/parsing/scopes/base.rb, line 61 def find_evaluation_root_scope(current_location) return nil unless inner_location?(current_location) [*child_scopes, *method_definitions].each do |s| if scope = s.find_evaluation_root_scope(current_location) return scope end end return self end
inner_location?(location)
click to toggle source
@param location [Location] @return [true, false]
# File lib/yoda/parsing/scopes/base.rb, line 44 def inner_location?(location) location.included?(node.location) end
kind()
click to toggle source
@abstract @return [Symbol]
# File lib/yoda/parsing/scopes/base.rb, line 50 def kind fail NotImplementedError end
method?()
click to toggle source
@return [true, false]
# File lib/yoda/parsing/scopes/base.rb, line 55 def method? false end