class Thor::Option
def self.parse(key, value)
By default all options are optional, unless :required is given.
string (--foo=value) or booleans (just --foo).
is given a default type is assumed. This default type accepts arguments as
The valid types are :boolean, :numeric, :hash, :array and :string. If none
#=> Option foo with default value true and type boolean
parse :foo => true
#=> Option foo without default value and type numeric
parse :foo => :numeric
#=> Option foo with default value 2 and type numeric
parse :foo => 2
#=> Required option foo without default value
parse :foo => :required
#=> Option foo with default value bar and alias :baz
parse [:foo, :baz] => "bar"
#=> Option foo with default value bar
parse :foo => "bar"
assumptions, but you can be more specific using the option method.
This parse quick options given as method_options. It makes several
def self.parse(key, value) if key.is_a?(Array) name, *aliases = key else name, aliases = key, [] end name = name.to_s default = value type = case value when Symbol default = nil if VALID_TYPES.include?(value) value elsif required = (value == :required) :string elsif value == :optional # TODO Remove this warning in the future. warn "Optional type is deprecated. Choose :boolean or :string instead. Assumed to be :boolean." :boolean end when TrueClass, FalseClass :boolean when Numeric :numeric when Hash, Array, String value.class.name.downcase.to_sym end self.new(name.to_s, nil, required, type, default, nil, nil, aliases) end