Class: Dynflow::Middleware::Stack
- Inherits:
 - 
      Object
      
        
- Object
 - Dynflow::Middleware::Stack
 
 
- Includes:
 - Algebrick::TypeCheck
 
- Defined in:
 - lib/dynflow/middleware/stack.rb
 
Instance Attribute Summary collapse
- 
  
    
      #action  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Returns the value of attribute action.
 - 
  
    
      #middleware  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Returns the value of attribute middleware.
 - 
  
    
      #middleware_class  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Returns the value of attribute middleware_class.
 
Class Method Summary collapse
Instance Method Summary collapse
- #call(*args) ⇒ Object
 - 
  
    
      #initialize(next_stack, middleware_class, method, action)  ⇒ Stack 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
A new instance of Stack.
 - #pass(*args) ⇒ Object
 
Constructor Details
#initialize(next_stack, middleware_class, method, action) ⇒ Stack
Returns a new instance of Stack.
      15 16 17 18 19 20 21  | 
    
      # File 'lib/dynflow/middleware/stack.rb', line 15 def initialize(next_stack, middleware_class, method, action) @middleware_class = Child! middleware_class, Middleware @middleware = middleware_class.new self @action = Type! action, Dynflow::Action, NilClass @method = Match! method, :delay, :plan, :run, :finalize, :plan_phase, :finalize_phase, :present, :hook @next_stack = Type! next_stack, Middleware::Stack, Proc end  | 
  
Instance Attribute Details
#action ⇒ Object (readonly)
Returns the value of attribute action.
      7 8 9  | 
    
      # File 'lib/dynflow/middleware/stack.rb', line 7 def action @action end  | 
  
#middleware ⇒ Object (readonly)
Returns the value of attribute middleware.
      7 8 9  | 
    
      # File 'lib/dynflow/middleware/stack.rb', line 7 def middleware @middleware end  | 
  
#middleware_class ⇒ Object (readonly)
Returns the value of attribute middleware_class.
      7 8 9  | 
    
      # File 'lib/dynflow/middleware/stack.rb', line 7 def middleware_class @middleware_class end  | 
  
Class Method Details
.build(middleware_classes, method, action, &block) ⇒ Object
      9 10 11 12 13  | 
    
      # File 'lib/dynflow/middleware/stack.rb', line 9 def self.build(middleware_classes, method, action, &block) middleware_classes.reverse_each.reduce(block) do |stack, klass| Middleware::Stack.new(stack, klass, method, action) end end  | 
  
Instance Method Details
#call(*args) ⇒ Object
      23 24 25  | 
    
      # File 'lib/dynflow/middleware/stack.rb', line 23 def call(*args) @middleware.send @method, *args end  | 
  
#pass(*args) ⇒ Object
      27 28 29  | 
    
      # File 'lib/dynflow/middleware/stack.rb', line 27 def pass(*args) @next_stack.call(*args) end  |