Class: Dynflow::Middleware::Register

Inherits:
Object
  • Object
show all
Includes:
Algebrick::TypeCheck
Defined in:
lib/dynflow/middleware/register.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeRegister

Returns a new instance of Register.



9
10
11
12
13
14
15
# File 'lib/dynflow/middleware/register.rb', line 9

def initialize
  @rules = Hash.new do |h, k|
    h[k] = { before:  [],
             after:   [],
             replace: [] }
  end
end

Instance Attribute Details

#rulesObject (readonly)

Returns the value of attribute rules.



7
8
9
# File 'lib/dynflow/middleware/register.rb', line 7

def rules
  @rules
end

Instance Method Details

#do_not_use(middleware_class) ⇒ Object



27
28
29
# File 'lib/dynflow/middleware/register.rb', line 27

def do_not_use(middleware_class)
  use nil, :replace => middleware_class
end

#merge!(register) ⇒ Object



31
32
33
34
35
36
# File 'lib/dynflow/middleware/register.rb', line 31

def merge!(register)
  Type! register, Middleware::Register
  register.rules.each do |klass, rules|
    use(klass, rules)
  end
end

#use(middleware_class, options = {}) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'lib/dynflow/middleware/register.rb', line 17

def use(middleware_class, options = {})
  unknown_options = options.keys - [:before, :after, :replace]
  if unknown_options.any?
    raise ArgumentError, "Unexpected options: #{unknown_options}"
  end
  @rules[middleware_class].merge!(options) do |key, old, new|
    old + Array(new)
  end
end