Sha256: a2e54eba4184baa7f7527bb96b2f361815a4307dc448e1d35d4b536b27ee3e32

Contents?: true

Size: 559 Bytes

Versions: 2

Compression:

Stored size: 559 Bytes

Contents

class MessageRouter
  class Context
    def initialize(context_proc, &block)
      @block = block
      @context_proc = normalize_context_proc(context_proc)
    end
    
    def call(router)
      if args = context_proc.call(router)
        klass = Class.new(router.class)
        klass.instance_exec(*args, &block)
        klass.dispatch(router.message)
      end
    end
    
  private
    attr_reader :block, :context_proc
    
    def normalize_context_proc(proc)
      proc.is_a?(Proc) ? proc : Proc.new{|instance| instance.send(proc) }
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
message_router-0.0.2 lib/message_router/context.rb
message_router-0.0.1 lib/message_router/context.rb