module Risitor::Visitor
The Visitor
module can extend a module or include a class to make it a dynamic visitor (see the OOP visitor pattern).
Public Class Methods
extended(visitor)
click to toggle source
# File lib/risitor/visitor.rb, line 25 def extended(visitor) visitor.extend(ClassMethods) visitor.extend(ClassMethodsWhenExtended) end
included(visitor)
click to toggle source
# File lib/risitor/visitor.rb, line 20 def included(visitor) visitor.extend(ClassMethods) visitor.extend(ClassMethodsWhenIncluded) end
Public Instance Methods
visit(object, *args, as: object.class)
click to toggle source
Calling visit execute the method associated with the type of object
.
# File lib/risitor/visitor.rb, line 10 def visit(object, *args, as: object.class) as.ancestors.each do |type| visit_method = VisitMethodHelper.gen_name(type) next unless respond_to?(visit_method) return send(visit_method, object, *args) end raise NoVisitMethodError.new(self, object, as) end