Module: ImageProcessing::Chainable
Constant Summary
collapse
- DEFAULT_OPTIONS =
{
source: nil,
loader: {},
saver: {},
format: nil,
operations: [],
processor: nil,
}.freeze
Instance Method Summary
collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args, &block) ⇒ Object
31
32
33
34
35
36
|
# File 'lib/image_processing/chainable.rb', line 31
def method_missing(name, *args, &block)
return super if name.to_s.end_with?("?")
return send(name.to_s.chomp("!"), *args, &block).call if name.to_s.end_with?("!")
operation(name, *args, &block)
end
|
Instance Method Details
#apply(operations) ⇒ Object
19
20
21
22
23
24
25
26
27
28
29
|
# File 'lib/image_processing/chainable.rb', line 19
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
|
#branch(loader: nil, saver: nil, operations: nil, **other_options) ⇒ Object
50
51
52
53
54
55
56
57
58
59
60
61
62
|
# File 'lib/image_processing/chainable.rb', line 50
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: self::Processor) unless self.is_a?(Builder)
options = options.merge(other_options)
options.freeze
Builder.new(options)
end
|
#call(file = nil, destination: nil, **call_options) ⇒ Object
42
43
44
45
46
47
48
|
# File 'lib/image_processing/chainable.rb', line 42
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
|
#convert(format) ⇒ Object
7
8
9
|
# File 'lib/image_processing/chainable.rb', line 7
def convert(format)
branch format: format
end
|
#loader(**options) ⇒ Object
11
12
13
|
# File 'lib/image_processing/chainable.rb', line 11
def loader(**options)
branch loader: options
end
|
#operation(name, *args, &block) ⇒ Object
38
39
40
|
# File 'lib/image_processing/chainable.rb', line 38
def operation(name, *args, &block)
branch operations: [[name, args, *block]]
end
|
#saver(**options) ⇒ Object
15
16
17
|
# File 'lib/image_processing/chainable.rb', line 15
def saver(**options)
branch saver: options
end
|
#source(file) ⇒ Object
3
4
5
|
# File 'lib/image_processing/chainable.rb', line 3
def source(file)
branch source: file
end
|