Class: MiniMagick::Tool
- Inherits:
-
Object
- Object
- MiniMagick::Tool
- Defined in:
- lib/mini_magick/tool.rb,
lib/mini_magick/tool/import.rb,
lib/mini_magick/tool/stream.rb,
lib/mini_magick/tool/animate.rb,
lib/mini_magick/tool/compare.rb,
lib/mini_magick/tool/conjure.rb,
lib/mini_magick/tool/convert.rb,
lib/mini_magick/tool/display.rb,
lib/mini_magick/tool/mogrify.rb,
lib/mini_magick/tool/montage.rb,
lib/mini_magick/tool/identify.rb,
lib/mini_magick/tool/composite.rb
Overview
Abstract class that wraps command-line tools. It shouldn’t be used directly, but through one of its subclasses (e.g. Mogrify). Use this class if you want to be closer to the metal and execute ImageMagick commands directly, but still with a nice Ruby interface.
Direct Known Subclasses
Animate, Compare, Composite, Conjure, Convert, Display, Identify, Import, Mogrify, Montage, Stream
Defined Under Namespace
Classes: Animate, Compare, Composite, Conjure, Convert, Display, Identify, Import, Mogrify, Montage, OptionMethods, Stream
Instance Attribute Summary collapse
- #args ⇒ Object readonly
- #name ⇒ Object readonly
Class Method Summary collapse
- .inherited(child) ⇒ Object
-
.new(*args) ⇒ MiniMagick::Tool, String
Aside from classic instantiation, it also accepts a block, and then executes the command in the end.
Instance Method Summary collapse
-
#+(*values) ⇒ self
Changes the last operator to its “plus” form.
-
#<<(arg) ⇒ self
Appends raw options, useful for appending image paths.
-
#call(whiny = @whiny, options = {}) ⇒ String
Executes the command that has been built up.
-
#command ⇒ Array<String>
The currently built-up command.
-
#executable ⇒ Array<String>
The executable used for this tool.
-
#initialize(name, whiny = MiniMagick.whiny) ⇒ Tool
constructor
A new instance of Tool.
-
#merge!(new_args) ⇒ self
Merges a list of raw options.
-
#stack {|_self| ... } ⇒ Object
Create an ImageMagick stack in the command (surround..
Constructor Details
#initialize(name, whiny = MiniMagick.whiny) ⇒ Tool
Returns a new instance of Tool.
56 57 58 59 60 |
# File 'lib/mini_magick/tool.rb', line 56 def initialize(name, whiny = MiniMagick.whiny) @name = name @whiny = whiny @args = [] end |
Instance Attribute Details
#args ⇒ Object (readonly)
48 49 50 |
# File 'lib/mini_magick/tool.rb', line 48 def args @args end |
#name ⇒ Object (readonly)
48 49 50 |
# File 'lib/mini_magick/tool.rb', line 48 def name @name end |
Class Method Details
.inherited(child) ⇒ Object
19 20 21 22 |
# File 'lib/mini_magick/tool.rb', line 19 def self.inherited(child) child_name = child.name.split("::").last.downcase child.send :include, MiniMagick::Tool::OptionMethods.new(child_name) end |
.new(*args) ⇒ MiniMagick::Tool, String
Aside from classic instantiation, it also accepts a block, and then executes the command in the end.
36 37 38 39 40 41 42 43 44 45 |
# File 'lib/mini_magick/tool.rb', line 36 def self.new(*args) instance = super(*args) if block_given? yield instance instance.call else instance end end |
Instance Method Details
#+(*values) ⇒ self
Changes the last operator to its “plus” form.
148 149 150 151 152 |
# File 'lib/mini_magick/tool.rb', line 148 def +(*values) args[-1] = args[-1].sub(/^-/, '+') self.merge!(values) self end |
#<<(arg) ⇒ self
Appends raw options, useful for appending image paths.
121 122 123 124 |
# File 'lib/mini_magick/tool.rb', line 121 def <<(arg) args << arg.to_s self end |
#call(whiny = @whiny, options = {}) ⇒ String
Executes the command that has been built up.
78 79 80 81 |
# File 'lib/mini_magick/tool.rb', line 78 def call(whiny = @whiny, = {}) shell = MiniMagick::Shell.new shell.run(command, .merge(whiny: whiny)).strip end |
#command ⇒ Array<String>
The currently built-up command.
94 95 96 |
# File 'lib/mini_magick/tool.rb', line 94 def command [*executable, *args] end |
#executable ⇒ Array<String>
The executable used for this tool. Respects Configuration#cli and Configuration#cli_path.
109 110 111 112 113 114 |
# File 'lib/mini_magick/tool.rb', line 109 def executable exe = [name] exe.unshift "gm" if MiniMagick.graphicsmagick? exe.unshift File.join(MiniMagick.cli_path, exe.shift) if MiniMagick.cli_path exe end |
#merge!(new_args) ⇒ self
Merges a list of raw options.
131 132 133 134 |
# File 'lib/mini_magick/tool.rb', line 131 def merge!(new_args) new_args.each { |arg| self << arg } self end |
#stack {|_self| ... } ⇒ Object
Create an ImageMagick stack in the command (surround.
169 170 171 172 173 |
# File 'lib/mini_magick/tool.rb', line 169 def stack self << "(" yield self self << ")" end |