Class: ParseOpts::ArgSpec
- Inherits:
-
Object
- Object
- ParseOpts::ArgSpec
- Defined in:
- lib/parseOpts.rb
Overview
:nodoc: all
Constant Summary collapse
- QuantOptions =
{ "" => [ false, false ], "?" => [ true, false ], "*" => [ true, true ], "+" => [ false, true ] }
Instance Attribute Summary collapse
-
#default ⇒ Object
readonly
Returns the value of attribute default.
-
#desc ⇒ Object
readonly
Returns the value of attribute desc.
-
#multiple ⇒ Object
readonly
Returns the value of attribute multiple.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#optional ⇒ Object
readonly
Returns the value of attribute optional.
-
#quant ⇒ Object
readonly
Returns the value of attribute quant.
Instance Method Summary collapse
- #init ⇒ Object
-
#initialize(name, quant, desc, pred, default) ⇒ ArgSpec
constructor
A new instance of ArgSpec.
- #match?(args) ⇒ Boolean
- #process(args) ⇒ Object
- #value ⇒ Object
Constructor Details
#initialize(name, quant, desc, pred, default) ⇒ ArgSpec
Returns a new instance of ArgSpec.
67 68 69 70 71 72 |
# File 'lib/parseOpts.rb', line 67 def initialize(name, quant, desc, pred, default) @name, @quant, @desc, @pred, @default = name, quant, desc, pred, default raise ArgumentError, "Unknown quantifier" unless QuantOptions.has_key?(quant) @optional, @multiple = *QuantOptions[quant] raise ArgumentError, "Default not allowed for mandatory argument" if @default && !@optional end |
Instance Attribute Details
#default ⇒ Object (readonly)
Returns the value of attribute default.
65 66 67 |
# File 'lib/parseOpts.rb', line 65 def default @default end |
#desc ⇒ Object (readonly)
Returns the value of attribute desc.
65 66 67 |
# File 'lib/parseOpts.rb', line 65 def desc @desc end |
#multiple ⇒ Object (readonly)
Returns the value of attribute multiple.
65 66 67 |
# File 'lib/parseOpts.rb', line 65 def multiple @multiple end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
65 66 67 |
# File 'lib/parseOpts.rb', line 65 def name @name end |
#optional ⇒ Object (readonly)
Returns the value of attribute optional.
65 66 67 |
# File 'lib/parseOpts.rb', line 65 def optional @optional end |
#quant ⇒ Object (readonly)
Returns the value of attribute quant.
65 66 67 |
# File 'lib/parseOpts.rb', line 65 def quant @quant end |
Instance Method Details
#init ⇒ Object
74 75 76 77 |
# File 'lib/parseOpts.rb', line 74 def init @value = @multiple ? [] : nil @matched = false end |
#match?(args) ⇒ Boolean
79 80 81 |
# File 'lib/parseOpts.rb', line 79 def match?(args) @pred ? @pred.call(args[0]) : true end |
#process(args) ⇒ Object
83 84 85 86 87 88 89 90 91 92 |
# File 'lib/parseOpts.rb', line 83 def process(args) @value = if @multiple a = [args.shift] a << args.shift while args.size > 0 && match?(args) a else args.shift end @matched = true end |
#value ⇒ Object
94 95 96 |
# File 'lib/parseOpts.rb', line 94 def value @default && !@matched ? @default : @value end |