Class: ConvenientService::Support::Middleware::StackBuilder::Entities::Builders::Stateful
- Inherits:
-
Object
- Object
- ConvenientService::Support::Middleware::StackBuilder::Entities::Builders::Stateful
- Defined in:
- lib/convenient_service/support/middleware/stack_builder/entities/builders/stateful.rb,
lib/convenient_service/support/middleware/stack_builder/entities/builders/stateful/exceptions.rb
Defined Under Namespace
Modules: Exceptions
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#stack ⇒ Object
readonly
Returns the value of attribute stack.
Instance Method Summary collapse
- #==(other) ⇒ Boolean?
-
#call(env) ⇒ Object
Can be any type.
- #clear ⇒ Boolean
- #delete(index_or_middleware) ⇒ ConvenientService::Support::Middleware::StackBuilder::Entities::Builders::Rack (also: #remove)
- #dup ⇒ ConvenientService::Support::Middleware::StackBuilder::Entities::Builders::Rack
- #empty? ⇒ Boolean
- #has?(some_middleware) ⇒ Boolean
- #initialize(**kwargs) ⇒ void constructor
- #insert(index_or_middleware, other_middleware) ⇒ ConvenientService::Support::Middleware::StackBuilder::Entities::Builders::Rack (also: #insert_before)
- #insert_after(index_or_middleware, other_middleware) ⇒ ConvenientService::Support::Middleware::StackBuilder::Entities::Builders::Rack
- #insert_after_each(other_middleware) ⇒ ConvenientService::Support::Middleware::StackBuilder::Entities::Builders::Rack
- #insert_before_each(other_middleware) ⇒ ConvenientService::Support::Middleware::StackBuilder::Entities::Builders::Rack
- #replace(index_or_middleware, other_middleware) ⇒ ConvenientService::Support::Middleware::StackBuilder::Entities::Builders::Rack
- #to_a ⇒ Array
- #unshift(middleware) ⇒ ConvenientService::Support::Middleware::StackBuilder::Entities::Builders::Rack (also: #prepend)
- #use(middleware) ⇒ ConvenientService::Support::Middleware::StackBuilder::Entities::Builders::Rack (also: #append)
Constructor Details
#initialize(**kwargs) ⇒ void
33 34 35 36 37 |
# File 'lib/convenient_service/support/middleware/stack_builder/entities/builders/stateful.rb', line 33 def initialize(**kwargs) @name = kwargs.fetch(:name) { "Stack" } @stack = kwargs.fetch(:stack) { [] } @index = -1 end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
27 28 29 |
# File 'lib/convenient_service/support/middleware/stack_builder/entities/builders/stateful.rb', line 27 def name @name end |
#stack ⇒ Object (readonly)
Returns the value of attribute stack.
21 22 23 |
# File 'lib/convenient_service/support/middleware/stack_builder/entities/builders/stateful.rb', line 21 def stack @stack end |
Instance Method Details
#==(other) ⇒ Boolean?
207 208 209 210 211 212 213 214 |
# File 'lib/convenient_service/support/middleware/stack_builder/entities/builders/stateful.rb', line 207 def ==(other) return unless other.instance_of?(self.class) return false if name != other.name return false if stack != other.stack true end |
#call(env) ⇒ Object
Returns Can be any type.
74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/convenient_service/support/middleware/stack_builder/entities/builders/stateful.rb', line 74 def call(env) return env if stack.empty? self.index += 1 if index == stack.size - 1 stack[index].call(env) else stack[index].new(self).call(env) end ensure self.index = -1 end |
#clear ⇒ Boolean
57 58 59 60 61 |
# File 'lib/convenient_service/support/middleware/stack_builder/entities/builders/stateful.rb', line 57 def clear stack.clear self end |
#delete(index_or_middleware) ⇒ ConvenientService::Support::Middleware::StackBuilder::Entities::Builders::Rack Also known as: remove
190 191 192 193 194 195 196 |
# File 'lib/convenient_service/support/middleware/stack_builder/entities/builders/stateful.rb', line 190 def delete(index_or_middleware) index = cast_index(index_or_middleware) stack.delete_at(index) self end |
#dup ⇒ ConvenientService::Support::Middleware::StackBuilder::Entities::Builders::Rack
226 227 228 |
# File 'lib/convenient_service/support/middleware/stack_builder/entities/builders/stateful.rb', line 226 def dup self.class.new(name: name.dup, stack: stack.dup) end |
#empty? ⇒ Boolean
42 43 44 |
# File 'lib/convenient_service/support/middleware/stack_builder/entities/builders/stateful.rb', line 42 def empty? stack.empty? end |
#has?(some_middleware) ⇒ Boolean
50 51 52 |
# File 'lib/convenient_service/support/middleware/stack_builder/entities/builders/stateful.rb', line 50 def has?(some_middleware) stack.any? { |middleware| middleware == some_middleware } end |
#insert(index_or_middleware, other_middleware) ⇒ ConvenientService::Support::Middleware::StackBuilder::Entities::Builders::Rack Also known as: insert_before
124 125 126 127 128 129 130 |
# File 'lib/convenient_service/support/middleware/stack_builder/entities/builders/stateful.rb', line 124 def insert(index_or_middleware, other_middleware) index = cast_index(index_or_middleware) stack.insert(index, other_middleware) self end |
#insert_after(index_or_middleware, other_middleware) ⇒ ConvenientService::Support::Middleware::StackBuilder::Entities::Builders::Rack
143 144 145 146 147 148 149 |
# File 'lib/convenient_service/support/middleware/stack_builder/entities/builders/stateful.rb', line 143 def insert_after(index_or_middleware, other_middleware) index = cast_index(index_or_middleware) stack.insert(index + 1, other_middleware) self end |
#insert_after_each(other_middleware) ⇒ ConvenientService::Support::Middleware::StackBuilder::Entities::Builders::Rack
165 166 167 168 169 |
# File 'lib/convenient_service/support/middleware/stack_builder/entities/builders/stateful.rb', line 165 def insert_after_each(other_middleware) @stack = stack.reduce([]) { |stack, middleware| stack.push(middleware, other_middleware) } self end |
#insert_before_each(other_middleware) ⇒ ConvenientService::Support::Middleware::StackBuilder::Entities::Builders::Rack
155 156 157 158 159 |
# File 'lib/convenient_service/support/middleware/stack_builder/entities/builders/stateful.rb', line 155 def insert_before_each(other_middleware) @stack = stack.reduce([]) { |stack, middleware| stack.push(other_middleware, middleware) } self end |
#replace(index_or_middleware, other_middleware) ⇒ ConvenientService::Support::Middleware::StackBuilder::Entities::Builders::Rack
177 178 179 180 181 182 183 |
# File 'lib/convenient_service/support/middleware/stack_builder/entities/builders/stateful.rb', line 177 def replace(index_or_middleware, other_middleware) index = cast_index(index_or_middleware) stack[index] = other_middleware self end |
#to_a ⇒ Array
219 220 221 |
# File 'lib/convenient_service/support/middleware/stack_builder/entities/builders/stateful.rb', line 219 def to_a stack end |
#unshift(middleware) ⇒ ConvenientService::Support::Middleware::StackBuilder::Entities::Builders::Rack Also known as: prepend
92 93 94 95 96 |
# File 'lib/convenient_service/support/middleware/stack_builder/entities/builders/stateful.rb', line 92 def unshift(middleware) stack.unshift(middleware) self end |
#use(middleware) ⇒ ConvenientService::Support::Middleware::StackBuilder::Entities::Builders::Rack Also known as: append
107 108 109 110 111 |
# File 'lib/convenient_service/support/middleware/stack_builder/entities/builders/stateful.rb', line 107 def use(middleware) stack << middleware self end |