Sha256: 5ab5eefb2c87bf9ea30eedfe5602a2940beb26c098e9ca0310f4683fe9b53fb9

Contents?: true

Size: 950 Bytes

Versions: 25

Compression:

Stored size: 950 Bytes

Contents

# frozen_string_literal: true
module Dynflow
  class Middleware::Stack
    include Algebrick::TypeCheck

    attr_reader :action, :middleware_class, :middleware

    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

    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

    def call(*args)
      @middleware.send @method, *args
    end

    def pass(*args)
      @next_stack.call(*args)
    end
  end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
dynflow-1.8.2 lib/dynflow/middleware/stack.rb
dynflow-1.8.1 lib/dynflow/middleware/stack.rb
dynflow-1.8.0 lib/dynflow/middleware/stack.rb
dynflow-1.7.0 lib/dynflow/middleware/stack.rb
dynflow-1.6.11 lib/dynflow/middleware/stack.rb
dynflow-1.6.10 lib/dynflow/middleware/stack.rb
dynflow-1.6.8 lib/dynflow/middleware/stack.rb
dynflow-1.6.7 lib/dynflow/middleware/stack.rb
dynflow-1.6.6 lib/dynflow/middleware/stack.rb
dynflow-1.6.5 lib/dynflow/middleware/stack.rb
dynflow-1.6.4 lib/dynflow/middleware/stack.rb
dynflow-1.6.3 lib/dynflow/middleware/stack.rb
dynflow-1.6.2 lib/dynflow/middleware/stack.rb
dynflow-1.6.1 lib/dynflow/middleware/stack.rb
dynflow-1.4.9 lib/dynflow/middleware/stack.rb
dynflow-1.4.8 lib/dynflow/middleware/stack.rb
dynflow-1.5.0 lib/dynflow/middleware/stack.rb
dynflow-1.4.7 lib/dynflow/middleware/stack.rb
dynflow-1.4.6 lib/dynflow/middleware/stack.rb
dynflow-1.4.5 lib/dynflow/middleware/stack.rb