lib/mini_magick/tool.rb in mini_magick-4.10.1 vs lib/mini_magick/tool.rb in mini_magick-4.11.0

- old
+ new

@@ -42,12 +42,14 @@ end # @private attr_reader :name, :args - # @param whiny [Boolean] Whether to raise errors on exit codes different - # than 0. + # @param name [String] + # @param options [Hash] + # @option options [Boolean] :whiny Whether to raise errors on non-zero + # exit codes. # @example # MiniMagick::Tool::Identify.new(whiny: false) do |identify| # identify.help # returns exit status 1, which would otherwise throw an error # end def initialize(name, options = {}) @@ -188,13 +190,19 @@ # convert.append.+ # convert << "images.gif" # end # # executes `convert wand.gif \( wizard.gif -rotate 30 \) +append images.gif` # - def stack + def stack(*args) self << "(" - yield self + args.each do |value| + case value + when Hash then value.each { |key, value| send(key, *value) } + when String then self << value + end + end + yield self if block_given? self << ")" end ## # Adds ImageMagick's pseudo-filename `-` for standard input. @@ -225,10 +233,11 @@ end ## # Define creator operator methods # + # @example # mogrify = MiniMagick::Tool.new("mogrify") # mogrify.canvas("khaki") # mogrify.command.join(" ") #=> "mogrify canvas:khaki" # CREATION_OPERATORS.each do |operator| @@ -249,13 +258,14 @@ end ## # Any undefined method will be transformed into a CLI option # + # @example # mogrify = MiniMagick::Tool.new("mogrify") # mogrify.adaptive_blur("...") # mogrify.foo_bar - # mogrify.command.join(" ") "mogrify -adaptive-blur ... -foo-bar" + # mogrify.command.join(" ") # => "mogrify -adaptive-blur ... -foo-bar" # def method_missing(name, *args) option = "-#{name.to_s.tr('_', '-')}" self << option self.merge!(args)