class ImageVise::Pipeline
Public Class Methods
from_array_of_operator_params(array_of_operator_names_to_operator_params)
click to toggle source
# File lib/image_vise/pipeline.rb, line 6 def self.from_array_of_operator_params(array_of_operator_names_to_operator_params) operators = array_of_operator_names_to_operator_params.map do |(operator_name, operator_params)| operator_class = operator_by_name(operator_name) if operator_params && operator_params.any? && operator_class.method(:new).arity.nonzero? operator_class.new(**operator_params) else operator_class.new end end new(operators) end
new(operators = [])
click to toggle source
# File lib/image_vise/pipeline.rb, line 18 def initialize(operators = []) @ops = operators.to_a end
operator_by_name(name)
click to toggle source
# File lib/image_vise/pipeline.rb, line 2 def self.operator_by_name(name) operator = ImageVise.operator_from(name) or raise "Unknown operator #{name}" end
Public Instance Methods
<<(image_operator)
click to toggle source
# File lib/image_vise/pipeline.rb, line 22 def <<(image_operator) @ops << image_operator; self end
apply!(magick_image, image_metadata)
click to toggle source
# File lib/image_vise/pipeline.rb, line 52 def apply!(magick_image, image_metadata) @ops.each do |operator| operator_short_classname = operator.class.to_s.split('::').pop Measurometer.instrument('image_vise.op.%s' % operator_short_classname) do apply_operator_passing_metadata(magick_image, operator, image_metadata) end end end
apply_operator_passing_metadata(magick_image, operator, image_metadata)
click to toggle source
# File lib/image_vise/pipeline.rb, line 61 def apply_operator_passing_metadata(magick_image, operator, image_metadata) if operator.method(:apply!).arity == 1 operator.apply!(magick_image) else operator.apply!(magick_image, image_metadata) end end
empty?()
click to toggle source
# File lib/image_vise/pipeline.rb, line 26 def empty? @ops.empty? end
method_missing(method_name, args = {}, &blk)
click to toggle source
# File lib/image_vise/pipeline.rb, line 30 def method_missing(method_name, args = {}, &blk) operator_builder = ImageVise.operator_from(method_name) if args.empty? # TODO: remove conditional after dropping Ruby 2.6 support self << operator_builder.new else self << operator_builder.new(**args) end end
respond_to_missing?(method_name, *a)
click to toggle source
# File lib/image_vise/pipeline.rb, line 40 def respond_to_missing?(method_name, *a) ImageVise.defined_operators.include?(method_name.to_s) end
to_params()
click to toggle source
# File lib/image_vise/pipeline.rb, line 44 def to_params @ops.map do |operator| operator_name = ImageVise.operator_name_for(operator) operator_params = operator.respond_to?(:to_h) ? operator.to_h : {} [operator_name, operator_params] end end