Sha256: 81be2a52f87885dc810a3c5e8b36fa9764712c629c888bf5067e2e8b712efd21

Contents?: true

Size: 490 Bytes

Versions: 8

Compression:

Stored size: 490 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}: Should not happen!"
            end
        end

    end

end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
build-tool-0.5.7 lib/mj/visitor.rb
build-tool-0.5.6 lib/mj/visitor.rb
build-tool-0.5.5 lib/mj/visitor.rb
build-tool-0.5.4 lib/mj/visitor.rb
build-tool-0.5.3 lib/mj/visitor.rb
build-tool-0.5.2 lib/mj/visitor.rb
build-tool-0.5.1 lib/mj/visitor.rb
build-tool-0.5.0 lib/mj/visitor.rb