Sha256: 41c630ecee355920963a54b525406bffac0a66c919f0859d808ff19297b284e3
Contents?: true
Size: 1.21 KB
Versions: 1
Compression:
Stored size: 1.21 KB
Contents
module RProgram class Option # Flag of the option attr_reader :flag # Is the option in equals format attr_reader :equals # Can the option be specified multiple times attr_reader :multiple def initialize(opts={:flag => nil, :equals => false, :multiple => false},&block) @flag = opts[:flag] @equals = opts[:equals] || false @multiple = opts[:multiple] || false @formating = block end def arguments(value) return [@flag] if value==true return [] if (value==nil || value==false) if value.kind_of?(Hash) value = value.map { |name,value| "#{name}=#{value}" } elsif value.kind_of?(Array) value = value.compact end if @multiple args = [] value.each { |arg| args += format(arg) } return args else return format(value) end end protected def default_format(value) return [@flag] + value if value.kind_of?(Array) return ["#{flag}=#{value}"] if @equals return [@flag, value] end def format(value) if @formating return @formating.call(@flag,value).to_a else return default_format(value) end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rprogram-0.0.9 | lib/rprogram/option.rb |