Method: Hx::Interop::Middleware.stack

Defined in:
lib/interop/middleware.rb

.stack(*classes, connection) ⇒ Object

Parameters:

Raises:

  • (ArgumentError)


23
24
25
26
27
28
29
30
31
# File 'lib/interop/middleware.rb', line 23

def self.stack(*classes, connection)
  raise ArgumentError, "Expected an instance of #{ReaderWriter}" unless connection.is_a? ReaderWriter

  classes.reverse.reduce connection do |wrapped, klass|
    raise ArgumentError, "Expected subclasses of #{self}" unless klass.is_a?(Class) && klass < self

    klass.new(wrapped)
  end
end