class Yoda::Evaluation::CurrentNodeExplain
CurrentNodeExplain
shows help for the current node.
Attributes
location[R]
@return [Parsing::Location]
registry[R]
@return [Store::Registry]
source[R]
@return [String]
Public Class Methods
new(registry, source, location)
click to toggle source
@param registry [Store::Registry] @param source [String] @param location [Parsing::Location]
# File lib/yoda/evaluation/current_node_explain.rb, line 17 def initialize(registry, source, location) @registry = registry @source = source @location = location end
Public Instance Methods
current_node_signature()
click to toggle source
@return [Model::NodeSignature, nil]
# File lib/yoda/evaluation/current_node_explain.rb, line 24 def current_node_signature return nil if !valid? || !current_node_trace @current_node_signature ||= Model::NodeSignature.new(current_node, current_node_trace) end
defined_files()
click to toggle source
@return [Array<(String, Integer, Integer)>]
# File lib/yoda/evaluation/current_node_explain.rb, line 35 def defined_files return [] if !valid? || !current_node_trace case current_node.type when :send current_node_trace.functions.map { |function| function.primary_source }.compact when :const current_node_trace.values.map { |value| value.primary_source || value.sources.first }.compact else [] end end
valid?()
click to toggle source
@return [true, false]
# File lib/yoda/evaluation/current_node_explain.rb, line 30 def valid? !!(current_node) end
Private Instance Methods
analyzer()
click to toggle source
@return [SourceAnalyzer]
# File lib/yoda/evaluation/current_node_explain.rb, line 66 def analyzer @analyzer ||= Parsing::SourceAnalyzer.from_source(source, location) end
current_node()
click to toggle source
@return [Parser::AST::Node]
# File lib/yoda/evaluation/current_node_explain.rb, line 56 def current_node analyzer.nodes_to_current_location_from_root.last end
current_node_trace()
click to toggle source
@return [Typing::Traces::Base, nil]
# File lib/yoda/evaluation/current_node_explain.rb, line 50 def current_node_trace return nil unless valid? @current_node_trace ||= evaluator.calculate_trace(current_node) end
evaluator()
click to toggle source
@return [Evaluator]
# File lib/yoda/evaluation/current_node_explain.rb, line 61 def evaluator @evaluator ||= Evaluator.from_ast(registry, analyzer.ast, location) end