Class: Argy::Parser
- Inherits:
-
Object
- Object
- Argy::Parser
- Defined in:
- lib/argy/parser.rb
Overview
Parses command line arguments.
Instance Attribute Summary collapse
-
#arguments ⇒ Array<Argument>
readonly
The arguments that were declared.
-
#examples ⇒ Array<String>
readonly
The examples that were declared.
-
#flags ⇒ Array<Array(Array<String>, Proc)>
readonly
The flags that were declared.
-
#options ⇒ Array<Option>
readonly
The options that were declared.
Instance Method Summary collapse
-
#argument(*args, **opts) ⇒ Object
Adds an argument.
-
#default_values ⇒ Hash{Symbol => Object}
Build the default values for the declared paramters.
-
#description(description = nil) ⇒ String
Gets or sets a description for your program.
-
#example(example) ⇒ Object
Adds an example.
-
#help(**opts) ⇒ Help
Generate help for this parser.
-
#initialize {|_self| ... } ⇒ Parser
constructor
A new instance of Parser.
-
#on(*args, &action) ⇒ Object
Adds a flag.
-
#option(*args, **opts) ⇒ Object
Adds an option.
-
#parameters ⇒ Array<Argument, Option>
All parameters that are defined.
-
#parse(argv, strategy: nil) ⇒ Hash{Symbol => Object}
Build the default values for the declared paramters.
-
#usage(usage = nil) ⇒ String
Gets or sets the usage for your program.
-
#validate!(values) ⇒ Hash{Symbol => Object}
Validate the values.
Constructor Details
#initialize {|_self| ... } ⇒ Parser
Returns a new instance of Parser.
26 27 28 29 30 31 32 33 34 |
# File 'lib/argy/parser.rb', line 26 def initialize @usage = $0 @description = nil @arguments = [] = [] @flags = [] @examples = [] yield self if block_given? end |
Instance Attribute Details
#arguments ⇒ Array<Argument> (readonly)
The arguments that were declared
16 17 18 |
# File 'lib/argy/parser.rb', line 16 def arguments @arguments end |
#examples ⇒ Array<String> (readonly)
The examples that were declared
12 13 14 |
# File 'lib/argy/parser.rb', line 12 def examples @examples end |
#flags ⇒ Array<Array(Array<String>, Proc)> (readonly)
The flags that were declared
24 25 26 |
# File 'lib/argy/parser.rb', line 24 def flags @flags end |
#options ⇒ Array<Option> (readonly)
The options that were declared
20 21 22 |
# File 'lib/argy/parser.rb', line 20 def end |
Instance Method Details
#argument(*args, **opts) ⇒ Object
Adds an argument
78 79 80 |
# File 'lib/argy/parser.rb', line 78 def argument(*args, **opts) @arguments << Argument.new(*args, **opts) end |
#default_values ⇒ Hash{Symbol => Object}
Build the default values for the declared paramters.
119 120 121 122 123 124 |
# File 'lib/argy/parser.rb', line 119 def default_values parameters.reduce(unused_args: []) do |acc, opt| acc[opt.name] = opt.default acc end end |
#description(description = nil) ⇒ String
Gets or sets a description for your program. If the provided description is nil, the description will not change.
58 59 60 61 |
# File 'lib/argy/parser.rb', line 58 def description(description = nil) @description = description if description @description end |
#example(example) ⇒ Object
Adds an example
68 69 70 |
# File 'lib/argy/parser.rb', line 68 def example(example) @examples << example end |
#help(**opts) ⇒ Help
Generate help for this parser.
113 114 115 |
# File 'lib/argy/parser.rb', line 113 def help(**opts) Help.new(self, **opts) end |
#on(*args, &action) ⇒ Object
Adds a flag
100 101 102 |
# File 'lib/argy/parser.rb', line 100 def on(*args, &action) @flags << [args, action] end |
#option(*args, **opts) ⇒ Object
Adds an option
88 89 90 |
# File 'lib/argy/parser.rb', line 88 def option(*args, **opts) << Option.new(*args, **opts) end |
#parameters ⇒ Array<Argument, Option>
All parameters that are defined
106 107 108 |
# File 'lib/argy/parser.rb', line 106 def parameters arguments + end |
#parse(argv, strategy: nil) ⇒ Hash{Symbol => Object}
Build the default values for the declared paramters.
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
# File 'lib/argy/parser.rb', line 132 def parse(argv, strategy: nil) argv = argv.dup values = default_values parser = build_parser(values) case strategy when :order parser.order!(argv) when :permute parser.permute!(argv) else parser.parse!(argv) end populate_arguments(values, argv) Options.new validate!(values) rescue OptionParser::ParseError => error raise ParseError.new(error) end |
#usage(usage = nil) ⇒ String
Gets or sets the usage for your program. If the provided usage is nil, the usage will not change.
44 45 46 47 |
# File 'lib/argy/parser.rb', line 44 def usage(usage = nil) @usage = usage if usage @usage end |
#validate!(values) ⇒ Hash{Symbol => Object}
Validate the values
156 157 158 159 160 161 |
# File 'lib/argy/parser.rb', line 156 def validate!(values) parameters.each do |param| param.validate(values[param.name]) end values end |