Sha256: e63b0d4f89562de48d333936fb2ed384e0f4a9734582aaee698d32658aee0b73
Contents?: true
Size: 1.96 KB
Versions: 3
Compression:
Stored size: 1.96 KB
Contents
module ImageProcessing module Chainable def source(file) branch source: file end def convert(format) branch format: format end def loader(**options) branch loader: options end 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) builder.send(name, *argument) else builder.send(name, argument) end end end def method_missing(name, *args) return super if name.to_s.end_with?("?") return send(name.to_s.chomp("!"), *args).call if name.to_s.end_with?("!") operation name, *args end def operation(name, *args) branch operations: [[name, args]] end def call(file = nil, destination: nil, **call_options) options = {} options = options.merge(source: file) if file options = options.merge(destination: destination) if destination branch(options).call!(**call_options) end def branch(loader: nil, saver: nil, operations: nil, **other_options) 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(other_options) options.freeze Builder.new(options) end DEFAULT_OPTIONS = { source: nil, loader: {}, saver: {}, format: nil, operations: [], processor_class: nil, }.freeze end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
image_processing-1.4.0 | lib/image_processing/chainable.rb |
image_processing-1.3.0 | lib/image_processing/chainable.rb |
image_processing-1.2.0 | lib/image_processing/chainable.rb |