Sha256: f35881c7ad41e528883fe266e7ac016d8087de91cb43979f62ab38a7a05e8603

Contents?: true

Size: 1.04 KB

Versions: 16

Compression:

Stored size: 1.04 KB

Contents

class ImageOptim
  # Hold information about an option
  class OptionDefinition
    attr_reader :name, :default, :type, :description, :proc

    def initialize(name, default, type_or_description, description = nil, &proc)
      if type_or_description.is_a?(Class)
        type = type_or_description
      else
        type, description = default.class, type_or_description
      end

      @name = name.to_sym
      @description = description.to_s
      @default, @type, @proc = default, type, proc
    end

    # Get value for worker from options
    def value(worker, options)
      value = options.key?(name) ? options[name] : default
      if proc
        if proc.arity == 2
          worker.instance_exec(value, self, &proc)
        else
          worker.instance_exec(value, &proc)
        end
      else
        value
      end
    end

    # Describe default value, returns string as is otherwise surrounds
    # inspected value with backticks
    def default_description
      default.is_a?(String) ? default : "`#{default.inspect}`"
    end
  end
end

Version data entries

16 entries across 16 versions & 2 rubygems

Version Path
image_optim-0.26.3 lib/image_optim/option_definition.rb
image_optim-0.26.2 lib/image_optim/option_definition.rb
discourse_image_optim-0.26.2 lib/image_optim/option_definition.rb
discourse_image_optim-0.26.1 lib/image_optim/option_definition.rb
image_optim-0.26.1 lib/image_optim/option_definition.rb
image_optim-0.26.0 lib/image_optim/option_definition.rb
image_optim-0.25.0 lib/image_optim/option_definition.rb
discourse_image_optim-0.24.5 lib/image_optim/option_definition.rb
image_optim-0.24.3 lib/image_optim/option_definition.rb
discourse_image_optim-0.24.4 lib/image_optim/option_definition.rb
image_optim-0.24.2 lib/image_optim/option_definition.rb
image_optim-0.24.1 lib/image_optim/option_definition.rb
image_optim-0.24.0 lib/image_optim/option_definition.rb
image_optim-0.23.0 lib/image_optim/option_definition.rb
image_optim-0.22.1 lib/image_optim/option_definition.rb
image_optim-0.22.0 lib/image_optim/option_definition.rb