Class: MJ::Visitable
- Inherits:
-
Object
- Object
- MJ::Visitable
- Defined in:
- lib/mj/visitor.rb
Direct Known Subclasses
Instance Method Summary collapse
Instance Method Details
#accept(visitor) ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 |
# File 'lib/mj/visitor.rb', line 5 def accept( visitor ) method_name = nil klass = self.class.ancestors.find do |ancestor| method_name = "visit_#{ancestor.name.split('::')[-1]}" visitor.respond_to?( method_name ) end if klass return visitor.send( method_name, self ) else raise "#{visitor.class}: Not a visitor for #{self.class}!" end end |