class Slop::Option

Constants

DEFAULT_OPTIONS

The default Hash of configuration options this class uses.

Attributes

config[R]
count[RW]
description[R]
long[R]
short[R]
types[R]
value[W]

Public Class Methods

new(slop, short, long, description, config = {}, &block) click to toggle source

Incapsulate internal option information, mainly used to store option specific configuration data, most of the meat of this class is found in the value method.

slop - The instance of Slop tied to this Option. short - The String or Symbol short flag. long - The String or Symbol long flag. description - The String description text. config - A Hash of configuration options. block - An optional block used as a callback.

# File lib/slop/option.rb, line 34
def initialize(slop, short, long, description, config = {}, &block)
  @slop = slop
  @short = short
  @long = long
  @description = description
  @config = DEFAULT_OPTIONS.merge(config)
  @count = 0
  @callback = block_given? ? block : config[:callback]

  @types = {
    :string  => proc { |v| v.to_s },
    :symbol  => proc { |v| v.to_sym },
    :integer => proc { |v| value_to_integer(v) },
    :float   => proc { |v| value_to_float(v) },
    :array   => proc { |v| v.split(@config[:delimiter], @config[:limit]) },
    :range   => proc { |v| value_to_range(v) },
    :count   => proc { |v| @count }
  }

  if long && long.size > @slop.config[:longest_flag]
    @slop.config[:longest_flag] = long.size
  end

  @config.each_key do |key|
    self.class.send(:define_method, "#{key}?") { !!@config[key] }
  end
end

Public Instance Methods

accepts_optional_argument?() click to toggle source

Returns true if this option accepts an optional argument.

# File lib/slop/option.rb, line 68
def accepts_optional_argument?
  config[:optional_argument] || config[:argument] == :optional
end
call(*objects) click to toggle source

Call this options callback if one exists, and it responds to call().

Returns nothing.

# File lib/slop/option.rb, line 80
def call(*objects)
  @callback.call(*objects) if @callback.respond_to?(:call)
end
expects_argument?() click to toggle source

Returns true if this option expects an argument.

# File lib/slop/option.rb, line 63
def expects_argument?
  config[:argument] && config[:argument] != :optional
end
help() click to toggle source
Alias for: to_s
inspect() click to toggle source

Returns the String inspection text.

# File lib/slop/option.rb, line 127
def inspect
  "#<Slop::Option [-#{short} | --#{long}" +
  "#{'=' if expects_argument?}#{'=?' if accepts_optional_argument?}]" +
  " (#{description}) #{config.inspect}"
end
key() click to toggle source

Returns the String flag of this option. Preferring the long flag.

# File lib/slop/option.rb, line 73
def key
  long || short
end
to_s() click to toggle source

Returns the help String for this option.

# File lib/slop/option.rb, line 107
def to_s
  return config[:help] if config[:help].respond_to?(:to_str)

  out = "    "
  out += short ? "-#{short}, " : ' ' * 4

  if long
    out += "--#{long}"
    size = long.size
    diff = @slop.config[:longest_flag] - size
    out += " " * (diff + 6)
  else
    out += " " * (@slop.config[:longest_flag] + 8)
  end

  "#{out}#{description}"
end
Also aliased as: help
value() click to toggle source

Fetch the argument value for this option.

Returns the Object once any type conversions have taken place.

# File lib/slop/option.rb, line 87
def value
  value = @value.nil? ? config[:default] : @value

  if [true, false, nil].include?(value) && config[:as].to_s != 'count'
    return value
  end

  type = config[:as]
  if type.respond_to?(:call)
    type.call(value)
  else
    if callable = types[type.to_s.downcase.to_sym]
      callable.call(value)
    else
      value
    end
  end
end