Module: CSS::SAC::Visitable
- Included in:
- Conditions::Condition, Selectors::Selector
- Defined in:
- lib/css/sac/visitable.rb
Overview
:nodoc:
Instance Method Summary collapse
-
#accept(visitor, &block) ⇒ Object
Based off the visitor pattern from RubyGarden.
Instance Method Details
#accept(visitor, &block) ⇒ Object
Based off the visitor pattern from RubyGarden
5 6 7 8 9 10 11 12 13 14 15 |
# File 'lib/css/sac/visitable.rb', line 5 def accept(visitor, &block) klass = self.class.ancestors.find { |klass| visitor.respond_to?("visit_#{klass.name.split(/::/)[-1]}") } if klass visitor.send(:"visit_#{klass.name.split(/::/)[-1]}", self, &block) else raise "No visitor for '#{self.class}'" end end |