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.
-
#short_opts ⇒ Object
readonly
Returns the value of attribute short_opts.
-
#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
#initialize ⇒ Parser
6 7 8 9 10 11 12 |
# File 'lib/optitron/parser.rb', line 6 def initialize = [] @commands = [] @args = [] @short_opts = {} @help = Help.new(self) end |
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 end |
#short_opts ⇒ Object (readonly)
Returns the value of attribute short_opts.
4 5 6 |
# File 'lib/optitron/parser.rb', line 4 def short_opts @short_opts 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
14 15 16 |
# File 'lib/optitron/parser.rb', line 14 def help @help.generate end |
#parse(args = ARGV) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/optitron/parser.rb', line 18 def parse(args = ARGV) tokens = Tokenizer.new(self, args).tokens response = Response.new(self, tokens) = args = @args unless @commands.empty? potential_cmd_toks = tokens.select { |t| t.respond_to?(:lit) } if cmd_tok = potential_cmd_toks.find { |t| @commands.assoc(t.lit) } tokens.delete(cmd_tok) response.command = cmd_tok.lit += @commands.assoc(cmd_tok.lit).last. args = @commands.assoc(cmd_tok.lit).last.args else puts @help.generate potential_cmd_toks.first ? response.add_error('an unknown command', potential_cmd_toks.first.lit) : response.add_error('unknown command') end end (tokens, , response) parse_args(tokens, args, response) response.validate response end |
#parse_args(tokens, args, response) ⇒ Object
55 56 57 |
# File 'lib/optitron/parser.rb', line 55 def parse_args(tokens, args, response) args.each { |arg| arg.consume(response, tokens) } end |
#parse_options(tokens, options, response) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/optitron/parser.rb', line 43 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) elsif opt.required? response.add_error("required", opt.name) end end end |