Sha256: cfa2807673d3936351bde7bcf3d5a7c0e0ac2dfa6e424b2ca8000272394f4e60

Contents?: true

Size: 504 Bytes

Versions: 17

Compression:

Stored size: 504 Bytes

Contents

module MJ;

    class Visitable

        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

    end

end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
build-tool-0.4.6 lib/mj/visitor.rb
build-tool-0.4.5 lib/mj/visitor.rb
build-tool-0.4.4 lib/mj/visitor.rb
build-tool-0.4.3 lib/mj/visitor.rb
build-tool-0.4.2 lib/mj/visitor.rb
build-tool-0.4.1 lib/mj/visitor.rb
build-tool-0.4.0 lib/mj/visitor.rb
build-tool-0.3.3 lib/mj/visitor.rb
build-tool-0.3.2 lib/mj/visitor.rb
build-tool-0.3.1 lib/mj/visitor.rb
build-tool-0.3 lib/mj/visitor.rb
build-tool-0.2 lib/mj/visitor.rb
build-tool-0.1.4 lib/mj/visitor.rb
build-tool-0.1.3 lib/mj/visitor.rb
build-tool-0.1.2 lib/mj/visitor.rb
build-tool-0.1.0 lib/mj/visitor.rb
build-tool-0.1.1 lib/mj/visitor.rb