Sha256: d4e30971a246cde66e2dffd5a933055bfd131206436ab388cdf5a9b28b8df6ff

Contents?: true

Size: 822 Bytes

Versions: 1

Compression:

Stored size: 822 Bytes

Contents

module RoutingFilter
  class Base
    class_inheritable_accessor :active
    self.active = true

    attr_accessor :chain, :options

    def initialize(options = {})
      @options = options
      options.each { |name, value| instance_variable_set :"@#{name}", value }
    end

    def run(method, *args, &block)
      _next = successor ? lambda { successor.run(method, *args, &block) } : block
      active ? send(method, *args, &_next) : _next.call(*args)
    end

    def run_reverse(method, *args, &block)
      _prev = predecessor ? lambda { predecessor.run(method, *args, &block) } : block
      active ? send(method, *args, &_prev) : _prev.call(*args)
    end

    def predecessor
      @chain.predecessor(self)
    end

    def successor
      @chain.successor(self)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
strikeroff-routing-filter-0.1.0 lib/routing_filter/base.rb