Class: ConvenientService::Support::Middleware::StackBuilder::Entities::Builders::Stateful

Inherits:
Custom
  • Object
show all
Defined in:
lib/convenient_service/support/middleware/stack_builder/entities/builders/stateful.rb

Instance Attribute Summary

Attributes inherited from Custom

#name, #stack

Instance Method Summary collapse

Methods inherited from Custom

#==, #clear, #delete, #dup, #empty?, #has?, #insert, #insert_after, #insert_after_each, #insert_before_each, #replace, #to_a, #unshift, #use

Methods included from AbstractMethod

abstract_method

Constructor Details

#initialize(**kwargs) ⇒ void

Parameters:

  • kwargs (Hash{Symbol => Object})


19
20
21
22
23
# File 'lib/convenient_service/support/middleware/stack_builder/entities/builders/stateful.rb', line 19

def initialize(**kwargs)
  super

  @index = -1
end

Instance Method Details

#call(env) ⇒ Object

Returns Can be any type.

Parameters:

  • env (Hash{Symbol => Object})

Returns:

  • (Object)

    Can be any type.



48
49
50
51
52
53
54
55
56
# File 'lib/convenient_service/support/middleware/stack_builder/entities/builders/stateful.rb', line 48

def call(env)
  self.index += 1

  return env if index == stack.size

  stack[index].new(self).call(env)
ensure
  self.index = -1
end

#call_with_original(env, original) ⇒ Object

Returns Can be any type.

Parameters:

  • env (Hash{Symbol => Object})
  • original (Proc)

Returns:

  • (Object)

    Can be any type.



33
34
35
# File 'lib/convenient_service/support/middleware/stack_builder/entities/builders/stateful.rb', line 33

def call_with_original(env, original)
  dup.use(Custom::Entities::ProcWithNew.new(original)).call(env)
end