Class: Cases::Caseable
- Inherits:
-
Object
- Object
- Cases::Caseable
- Defined in:
- lib/cases/caseable.rb
Instance Attribute Summary collapse
-
#object ⇒ Object
readonly
Returns the value of attribute object.
-
#runtime_block ⇒ Object
readonly
Returns the value of attribute runtime_block.
Instance Method Summary collapse
- #execute ⇒ Object
-
#initialize(object, &runtime_block) ⇒ Caseable
constructor
A new instance of Caseable.
- #method_missing(method, &case_block) ⇒ Object
Constructor Details
#initialize(object, &runtime_block) ⇒ Caseable
Returns a new instance of Caseable.
5 6 7 8 |
# File 'lib/cases/caseable.rb', line 5 def initialize(object, &runtime_block) @object = object @runtime_block = runtime_block end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, &case_block) ⇒ Object
15 16 17 18 |
# File 'lib/cases/caseable.rb', line 15 def method_missing(method, &case_block) case_blocks << case_block if object.send(method) case_blocks end |
Instance Attribute Details
#object ⇒ Object (readonly)
Returns the value of attribute object.
3 4 5 |
# File 'lib/cases/caseable.rb', line 3 def object @object end |
#runtime_block ⇒ Object (readonly)
Returns the value of attribute runtime_block.
3 4 5 |
# File 'lib/cases/caseable.rb', line 3 def runtime_block @runtime_block end |
Instance Method Details
#execute ⇒ Object
10 11 12 13 |
# File 'lib/cases/caseable.rb', line 10 def execute runtime_block.call(self) case_blocks.reduce(object) { |result, case_block| case_block.call(result) } end |