class Core::Handler::Callable
- public
Attributes
pipelines[R]
Public Class Methods
build_name()
click to toggle source
# File lib/core/handler/callable.rb, line 15 def build_name suffix = generate_random_suffix if __used_random_suffixes__.include?(suffix) build_name else __used_random_suffixes__ << suffix "callback_#{suffix}" end end
generate_random_suffix()
click to toggle source
# File lib/core/handler/callable.rb, line 25 def generate_random_suffix SecureRandom.hex(8) end
new(object)
click to toggle source
# File lib/core/handler/callable.rb, line 38 def initialize(object) @object = object @mutex = Mutex.new @compiled = false @pipelines = { __core_event_global__: Core::Pipeline::Callable.new(@object) } end
Public Instance Methods
finalize()
click to toggle source
- public
# File lib/core/handler/callable.rb, line 98 def finalize compile self end
handle(*events, global: false, method: nil, context: nil, &block)
click to toggle source
- public
# File lib/core/handler/callable.rb, line 67 def handle(*events, global: false, method: nil, context: nil, &block) @mutex.synchronize do if global == true @pipelines[:__core_event_global__].action(method, context: context, curry: true, &block) end needs_recompile = false events.each do |event| event = event.to_sym if event.is_a?(String) unless @pipelines.include?(event) @pipelines[event] = Core::Pipeline::Callable.new(@object) needs_recompile = true end @pipelines[event].action(method, context: context, curry: true, &block) end recompile if compiled? && needs_recompile end end
initialize_copy(...)
click to toggle source
Calls superclass method
# File lib/core/handler/callable.rb, line 47 def initialize_copy(...) @pipelines = @pipelines.each_pair.each_with_object({}) { |(key, value), hash| hash[key] = value.clone } super end
relocate(object)
click to toggle source
- public
-
Relocates to another object context.
# File lib/core/handler/callable.rb, line 57 def relocate(object) @object = object @pipelines.each_value do |pipeline| pipeline.relocate(object) end end
trigger(object, event, ...)
click to toggle source
- public
# File lib/core/handler/callable.rb, line 92 def trigger(object, event, ...) finalize.trigger(object, event, ...) end
Private Instance Methods
call_handler(object, event, handled, *args, **kwargs, &block)
click to toggle source
# File lib/core/handler/callable.rb, line 127 def call_handler(object, event, handled, *args, **kwargs, &block) if (pipeline = @pipelines[event]) pipeline.call(object, *args, event: handled, **kwargs, &block) end end
compile()
click to toggle source
# File lib/core/handler/callable.rb, line 104 def compile return if compiled? instance_eval(Compiler.compile(self), __FILE__, __LINE__ - 1) @compiled = true end
compiled?()
click to toggle source
# File lib/core/handler/callable.rb, line 116 def compiled? @compiled == true end
recompile()
click to toggle source
# File lib/core/handler/callable.rb, line 111 def recompile remove_compiled_trigger compile end
remove_compiled_trigger()
click to toggle source
# File lib/core/handler/callable.rb, line 120 def remove_compiled_trigger return unless compiled? singleton_class.remove_method(:trigger) @compiled = false end