Class: Sickle::Option

Inherits:
Object
  • Object
show all
Defined in:
lib/sickle.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, opts) ⇒ Option

Returns a new instance of Option.



66
67
68
69
70
71
72
73
74
75
76
# File 'lib/sickle.rb', line 66

def initialize(name, opts)
  @name, @opts = name, opts

  @default = opts.has_key?(:default) ? opts[:default] : false

  if @default == true || @default == false
    @type = :boolean
  else
    @type = @default.class.to_s.downcase.to_sym
  end
end

Instance Attribute Details

#defaultObject

Returns the value of attribute default.



64
65
66
# File 'lib/sickle.rb', line 64

def default
  @default
end

#nameObject

Returns the value of attribute name.



64
65
66
# File 'lib/sickle.rb', line 64

def name
  @name
end

#optsObject

Returns the value of attribute opts.



64
65
66
# File 'lib/sickle.rb', line 64

def opts
  @opts
end

Instance Method Details

#cli_nameObject



90
91
92
# File 'lib/sickle.rb', line 90

def cli_name
  @name.to_s.tr("_", "-")
end

#coerce(value) ⇒ Object



94
95
96
97
98
99
100
101
102
103
# File 'lib/sickle.rb', line 94

def coerce(value)
  case @default
  when Fixnum
    value.to_i
  when Float
    value.to_f
  else
    value
  end
end

#register(parser, results) ⇒ Object



78
79
80
81
82
83
84
85
86
87
88
# File 'lib/sickle.rb', line 78

def register(parser, results)
  if @type == :boolean
    parser.on("--#{cli_name}", opts[:desc]) do
      results[@name] = true
    end
  else
    parser.on("--#{cli_name} #{@name.upcase}") do |v|
      results[@name] = coerce(v)
    end
  end
end