Sha256: 3ae3956b3eb8259f074ea8c589161d9f727eab9ef6e9e8226c9d062204c485e9

Contents?: true

Size: 749 Bytes

Versions: 5

Compression:

Stored size: 749 Bytes

Contents

class DripDrop::Node
  # See the documentation for +nodelet+ in DripDrop::Node
  class Nodelet
    attr_accessor :name, :routing
    
    def initialize(name, routes)
      @name    = name
      @routing = {}
      routes.each do |route_name,handler|
        # Copy the original routing table
        route route_name, handler
      
        # Define short versions of the local routes for
        # this nodelet's routing table
        if (route_name.to_s =~ /^#{name}_(.+)$/)
          short_name = $1
          route short_name, handler
        end
      end
    end
    
    def route(name,handler)
      @routing[name] = handler
      (class << self; self; end).class_eval do
        define_method(name) { handler }
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
dripdrop-0.6.0 lib/dripdrop/node/nodelet.rb
dripdrop-0.5.0 lib/dripdrop/node/nodelet.rb
dripdrop-0.4.2 lib/dripdrop/node/nodelet.rb
dripdrop-0.4.1 lib/dripdrop/node/nodelet.rb
dripdrop-0.4.0 lib/dripdrop/node/nodelet.rb