class RubyNext::Language::Rewriters::Predicates::Processor
Attributes
predicates[R]
Public Class Methods
new(predicates)
click to toggle source
Calls superclass method
# File lib/ruby-next/language/rewriters/pattern_matching.rb, line 68 def initialize(predicates) @predicates = predicates super() end
Public Instance Methods
on_and(node)
click to toggle source
# File lib/ruby-next/language/rewriters/pattern_matching.rb, line 82 def on_and(node) left, right = *node.children if truthy(left) process(right) elsif truthy(right) process(left) else node.updated( :and, [ process(left), process(right) ] ) end end
on_lvasgn(node)
click to toggle source
# File lib/ruby-next/language/rewriters/pattern_matching.rb, line 73 def on_lvasgn(node) lvar, val = *node.children if predicates.store[lvar] == false process(val) else node end end
Private Instance Methods
truthy(node)
click to toggle source
# File lib/ruby-next/language/rewriters/pattern_matching.rb, line 102 def truthy(node) return false unless node.is_a?(::Parser::AST::Node) return true if node.type == :true return false if node.children.empty? node.children.all? { |child| truthy(child) } end