Sha256: fe99f780c58361d1a7bf8d031676a0ab8b3b57b1d801e499aabefe08c9c3a2f7

Contents?: true

Size: 844 Bytes

Versions: 8

Compression:

Stored size: 844 Bytes

Contents

class DripDrop::Node
  # See the documentation for +nodelet+ in DripDrop::Node
  class Nodelet
    attr_accessor :name, :routing
    
    def initialize(ctx, name, routes)
      @ctx              = ctx
      @name             = name
      @internal_routing = {}
    end
    
    def route(name,handler_type,*handler_args)
      handler = @ctx.route_full(self, name, handler_type, *handler_args)
      @internal_routing[name] = handler
       
      (class << self; self; end).class_eval do
        define_method(name) { handler }
      end
    end

    # Check for the method as a route in @ctx, if found
    # memoize it by defining it as a singleton
    def method_missing(meth,*args)
      (class << self; self; end).class_eval do
        define_method(meth) { @ctx.send(meth,*args) }
      end
      self.send(meth,*args)
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
dripdrop-0.9.6 lib/dripdrop/node/nodelet.rb
dripdrop-0.9.5 lib/dripdrop/node/nodelet.rb
dripdrop-0.9.4 lib/dripdrop/node/nodelet.rb
dripdrop-0.9.3 lib/dripdrop/node/nodelet.rb
dripdrop-0.9.2 lib/dripdrop/node/nodelet.rb
dripdrop-0.8.1 lib/dripdrop/node/nodelet.rb
dripdrop-0.8.0 lib/dripdrop/node/nodelet.rb
dripdrop-0.7.1 lib/dripdrop/node/nodelet.rb