class Mercenary::Option
Attributes
Public Class Methods
Public: Create a new Option
config_key
- the key in the config hash to which the value of this option
will map
info - an array containing first the switches, then an optional
return type (e.g. Array), then a description of the option
Returns nothing
# File lib/mercenary/option.rb, line 15 def initialize(config_key, info) @config_key = config_key while arg = info.shift begin @return_type = Object.const_get(arg.to_s) next rescue NameError end if arg.start_with?("-") if arg.start_with?("--") @long = arg else @short = arg end next end @description = arg end end
Public Instance Methods
Public: Check equivalence of two Options based on equivalence of their
instance variables
Returns true if all the instance variables are equal, false otherwise
# File lib/mercenary/option.rb, line 73 def eql?(other) return false unless self.class.eql?(other.class) instance_variables.map do |var| instance_variable_get(var).eql?(other.instance_variable_get(var)) end.all? end
Public: Fetch the array containing the info OptionParser is interested in
Returns the array which OptionParser#on wants
# File lib/mercenary/option.rb, line 38 def for_option_parser [short, long, return_type, description].flatten.reject { |o| o.to_s.empty? } end
Public: Build a beautifully-formatted string representation of the switches
Returns a formatted string representation of the switches
# File lib/mercenary/option.rb, line 53 def formatted_switches [ switches.first.rjust(10), switches.last.ljust(13), ].join(", ").gsub(%r! , !, " ").gsub(%r!, !, " ") end
Public: Hash based on the hash value of instance variables
Returns a Fixnum which is unique to this Option
based on the instance variables
# File lib/mercenary/option.rb, line 63 def hash instance_variables.map do |var| instance_variable_get(var).hash end.reduce(:^) end
Public: Fetch an array of switches, including the short and long versions
Returns an array of two strings. An empty string represents no switch in that position.
# File lib/mercenary/option.rb, line 85 def switches [short, long].map(&:to_s) end
Public: Build a string representation of this option including the
switches and description
Returns a string representation of this option
# File lib/mercenary/option.rb, line 46 def to_s "#{formatted_switches} #{description}" end