class Core::Pipeline::Callable
- public
-
Calls a pipeline on a pipelined object.
Attributes
actions[R]
skipped[R]
Public Class Methods
new(object)
click to toggle source
# File lib/core/pipeline/callable.rb, line 16 def initialize(object) @object = object @mutex = Mutex.new @actions = [] @skipped = [] end
Public Instance Methods
action(*args, before: nil, after: nil, context: nil, &block)
click to toggle source
- public
-
Defines a pipeline action.
# File lib/core/pipeline/callable.rb, line 34 def action(*args, before: nil, after: nil, context: nil, &block) @actions << Action.build(*args, before: before, after: after, context: context, &block) end
any?()
click to toggle source
- public
-
Returns true if the pipeline will call any actions.
# File lib/core/pipeline/callable.rb, line 28 def any? (@actions.map(&:name) - @skipped).any? end
call(object, ...)
click to toggle source
- public
-
Calls the pipeline in context of an object with the given arguments.
# File lib/core/pipeline/callable.rb, line 81 def call(object, ...) compile.call(object, ...) end
exclude(pipeline)
click to toggle source
- public
-
Excludes actions from the given pipeline.
# File lib/core/pipeline/callable.rb, line 69 def exclude(pipeline) if (pipeline.is_a?(Class) || pipeline.is_a?(Module)) && pipeline.ancestors.include?(Is::Pipeline) pipeline.pipeline.actions.each do |action| @actions.delete(action) end else raise ArgumentError, "expected a pipeline" end end
include(pipeline)
click to toggle source
- public
-
Includes actions from the given pipeline.
# File lib/core/pipeline/callable.rb, line 59 def include(pipeline) if (pipeline.is_a?(Class) || pipeline.is_a?(Module)) && pipeline.ancestors.include?(Is::Pipeline) @actions.concat(pipeline.pipeline.actions) else raise ArgumentError, "expected a pipeline" end end
skip(name)
click to toggle source
- public
-
Skips the given action.
# File lib/core/pipeline/callable.rb, line 40 def skip(name) @skipped << name.to_sym end
use(pipeline)
click to toggle source
- public
-
Replaces existing actions with actions from the given pipeline.
# File lib/core/pipeline/callable.rb, line 46 def use(pipeline) if (pipeline.is_a?(Class) || pipeline.is_a?(Module)) && pipeline.ancestors.include?(Is::Pipeline) @mutex.synchronize do @actions.clear @actions.concat(pipeline.pipeline.actions) end else raise ArgumentError, "expected a pipeline" end end
Private Instance Methods
compile()
click to toggle source
# File lib/core/pipeline/callable.rb, line 85 def compile instance_eval(Compiler.compile(self, @object), __FILE__, __LINE__ - 1) self end