class Qs::CLIRB::Option

Attributes

abbrev[R]
desc[R]
klass[R]
name[R]
opt_name[R]
parser_args[R]
value[R]

Public Class Methods

new(name, *args) click to toggle source
# File lib/qs/cli.rb, line 101
def initialize(name, *args)
  settings, @desc = args.last.kind_of?(::Hash) ? args.pop : {}, args.pop || ''
  @name, @opt_name, @abbrev = parse_name_values(name, settings[:abbrev])
  @value, @klass = gvalinfo(settings[:value])
  @parser_args = if [TrueClass, FalseClass, NilClass].include?(@klass)
    ["-#{@abbrev}", "--[no-]#{@opt_name}", @desc]
  else
    ["-#{@abbrev}", "--#{@opt_name} #{@opt_name.upcase}", @klass, @desc]
  end
end

Private Instance Methods

gklass(k) click to toggle source
# File lib/qs/cli.rb, line 120
def gklass(k); k == Fixnum ? Integer : k; end
gvalinfo(v) click to toggle source
# File lib/qs/cli.rb, line 119
def gvalinfo(v); v.kind_of?(Class) ? [nil,gklass(v)] : [v,gklass(v.class)]; end
parse_name_values(name, custom_abbrev) click to toggle source
# File lib/qs/cli.rb, line 114
def parse_name_values(name, custom_abbrev)
  [ (processed_name = name.to_s.strip.downcase), processed_name.gsub('_', '-'),
    custom_abbrev || processed_name.gsub(/[^a-z]/, '').chars.first || 'a'
  ]
end