Class: Optitron::Parser
- Inherits:
-
Object
- Object
- Optitron::Parser
- Defined in:
- lib/optitron/parser.rb
Instance Attribute Summary collapse
-
#args ⇒ Object
readonly
Returns the value of attribute args.
-
#commands ⇒ Object
readonly
Returns the value of attribute commands.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#target ⇒ Object
Returns the value of attribute target.
Instance Method Summary collapse
- #help ⇒ Object
-
#initialize ⇒ Parser
constructor
A new instance of Parser.
- #parse(args = ARGV) ⇒ Object
- #parse_args(tokens, args, response) ⇒ Object
- #parse_options(tokens, options, response) ⇒ Object
Constructor Details
Instance Attribute Details
#args ⇒ Object (readonly)
Returns the value of attribute args.
4 5 6 |
# File 'lib/optitron/parser.rb', line 4 def args @args end |
#commands ⇒ Object (readonly)
Returns the value of attribute commands.
4 5 6 |
# File 'lib/optitron/parser.rb', line 4 def commands @commands end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
4 5 6 |
# File 'lib/optitron/parser.rb', line 4 def @options end |
#target ⇒ Object
Returns the value of attribute target.
3 4 5 |
# File 'lib/optitron/parser.rb', line 3 def target @target end |
Instance Method Details
#help ⇒ Object
12 13 14 |
# File 'lib/optitron/parser.rb', line 12 def help @help.generate end |
#parse(args = ARGV) ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/optitron/parser.rb', line 16 def parse(args = ARGV) tokens = Tokenizer.new(args).tokens response = Response.new(self, tokens) = @options args = @args if !@commands.empty? potential_cmd_toks = tokens.select { |t| t.respond_to?(:val) } if cmd_tok = potential_cmd_toks.find { |t| @commands[t.val] } tokens.delete(cmd_tok) response.command = cmd_tok.val += @commands[cmd_tok.val]. args = @commands[cmd_tok.val].args else potential_cmd_toks.first ? response.add_error('an unknown command', potential_cmd_toks.first.val) : response.add_error('unknown command') end end (tokens, , response) parse_args(tokens, args, response) response.validate response end |
#parse_args(tokens, args, response) ⇒ Object
50 51 52 |
# File 'lib/optitron/parser.rb', line 50 def parse_args(tokens, args, response) args.each { |arg| arg.consume(response, tokens) } if args end |
#parse_options(tokens, options, response) ⇒ Object
40 41 42 43 44 45 46 47 48 |
# File 'lib/optitron/parser.rb', line 40 def (tokens, , response) .each do |opt| response.params[opt.name] = opt.default if opt.has_default? if opt_tok = tokens.find { |tok| opt.match?(tok) } opt_tok_index = tokens.index(opt_tok) opt.consume(response, tokens) end end end |