lib/image_processing/chainable.rb in image_processing-1.4.0 vs lib/image_processing/chainable.rb in image_processing-1.5.0

- old
+ new

@@ -14,14 +14,10 @@ def saver(**options) branch saver: options end - def custom(&block) - operation :custom, block - end - def apply(operations) operations.inject(self) do |builder, (name, argument)| if argument == true || argument == nil builder.send(name) elsif argument.is_a?(Array) @@ -30,19 +26,19 @@ builder.send(name, argument) end end end - def method_missing(name, *args) + def method_missing(name, *args, &block) return super if name.to_s.end_with?("?") - return send(name.to_s.chomp("!"), *args).call if name.to_s.end_with?("!") + return send(name.to_s.chomp("!"), *args, &block).call if name.to_s.end_with?("!") - operation name, *args + operation(name, *args, &block) end - def operation(name, *args) - branch operations: [[name, args]] + def operation(name, *args, &block) + branch operations: [[name, args, *block]] end def call(file = nil, destination: nil, **call_options) options = {} options = options.merge(source: file) if file @@ -55,23 +51,23 @@ options = respond_to?(:options) ? self.options : DEFAULT_OPTIONS options = options.merge(loader: options[:loader].merge(loader)) if loader options = options.merge(saver: options[:saver].merge(saver)) if saver options = options.merge(operations: options[:operations] + operations) if operations - options = options.merge(processor_class: self::Processor) unless self.is_a?(Builder) + options = options.merge(processor: self::Processor) unless self.is_a?(Builder) options = options.merge(other_options) options.freeze Builder.new(options) end DEFAULT_OPTIONS = { - source: nil, - loader: {}, - saver: {}, - format: nil, - operations: [], - processor_class: nil, + source: nil, + loader: {}, + saver: {}, + format: nil, + operations: [], + processor: nil, }.freeze end end