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) ⇒ 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.
Constructor Details
#initialize(name, whiny = MiniMagick.whiny) ⇒ Tool
Returns a new instance of Tool.
68 69 70 71 72 |
# File 'lib/mini_magick/tool.rb', line 68 def initialize(name, whiny = MiniMagick.whiny) @name = name @whiny = whiny @args = [] end |
Instance Attribute Details
#args ⇒ Object (readonly)
60 61 62 |
# File 'lib/mini_magick/tool.rb', line 60 def args @args end |
#name ⇒ Object (readonly)
60 61 62 |
# File 'lib/mini_magick/tool.rb', line 60 def name @name end |
Class Method Details
.inherited(child) ⇒ Object
31 32 33 34 |
# File 'lib/mini_magick/tool.rb', line 31 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.
48 49 50 51 52 53 54 55 56 57 |
# File 'lib/mini_magick/tool.rb', line 48 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.
159 160 161 162 163 |
# File 'lib/mini_magick/tool.rb', line 159 def +(*values) args[-1] = args[-1].sub(/^-/, '+') self.merge!(values) self end |
#<<(arg) ⇒ self
Appends raw options, useful for appending image paths.
133 134 135 136 |
# File 'lib/mini_magick/tool.rb', line 133 def <<(arg) args << arg.to_s self end |
#call(whiny = @whiny) ⇒ String
Executes the command that has been built up.
90 91 92 93 |
# File 'lib/mini_magick/tool.rb', line 90 def call(whiny = @whiny) shell = MiniMagick::Shell.new(whiny) shell.run(command).strip end |
#command ⇒ Array<String>
The currently built-up command.
106 107 108 |
# File 'lib/mini_magick/tool.rb', line 106 def command [*executable, *args] end |
#executable ⇒ Array<String>
The executable used for this tool. Respects Configuration#cli and Configuration#cli_path.
121 122 123 124 125 126 |
# File 'lib/mini_magick/tool.rb', line 121 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.
143 144 145 146 |
# File 'lib/mini_magick/tool.rb', line 143 def merge!(new_args) new_args.each { |arg| self << arg } self end |