Class: Foobara::Callback::Block

Inherits:
Object
  • Object
show all
Includes:
Concerns::Type
Defined in:
foobara-0.0.110/projects/callback/src/block.rb,
foobara-0.0.110/projects/callback/src/block/after.rb,
foobara-0.0.110/projects/callback/src/block/error.rb,
foobara-0.0.110/projects/callback/src/block/around.rb,
foobara-0.0.110/projects/callback/src/block/before.rb,
foobara-0.0.110/projects/callback/src/block/concerns/type.rb,
foobara-0.0.110/projects/callback/src/block/concerns/single_argument_block.rb,
foobara-0.0.110/projects/callback/src/block/concerns/block_parameter_required.rb,
foobara-0.0.110/projects/callback/src/block/concerns/keyword_argumentable_block.rb,
foobara-0.0.110/projects/callback/src/block/concerns/block_parameter_not_allowed.rb

Direct Known Subclasses

After, Around, Before, Error

Defined Under Namespace

Modules: Concerns Classes: After, Around, Before, Error

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Foobara::Concern

foobara_class_methods_module_for, foobara_concern?, included

Constructor Details

#initialize(original_block) ⇒ Block

Returns a new instance of Block.



24
25
26
27
# File 'foobara-0.0.110/projects/callback/src/block.rb', line 24

def initialize(original_block)
  self.original_block = original_block
  validate_original_block!
end

Instance Attribute Details

#original_blockObject

Returns the value of attribute original_block.



22
23
24
# File 'foobara-0.0.110/projects/callback/src/block.rb', line 22

def original_block
  @original_block
end

Class Method Details

.for(type, callback) ⇒ Object



17
18
19
# File 'foobara-0.0.110/projects/callback/src/block.rb', line 17

def for(type, callback)
  const_get(Util.classify(type)).new(callback)
end

.typesObject



13
14
15
# File 'foobara-0.0.110/projects/callback/src/block.rb', line 13

def types
  @types ||= types_to_subclasses.keys
end

.types_to_subclassesObject



9
10
11
# File 'foobara-0.0.110/projects/callback/src/block.rb', line 9

def types_to_subclasses
  @types_to_subclasses ||= subclasses.to_h { |klass| [klass.type, klass] }
end

Instance Method Details

#callObject



31
32
33
# File 'foobara-0.0.110/projects/callback/src/block.rb', line 31

def call(...)
  to_proc.call(...)
end

#to_procObject



35
36
37
# File 'foobara-0.0.110/projects/callback/src/block.rb', line 35

def to_proc
  @to_proc ||= original_block
end