class TTY::Option::Parser
Constants
- ARGUMENT_SEPARATOR
- PARAMETER_PARSERS
Attributes
config[R]
parameters[R]
Public Class Methods
new(parameters, **config)
click to toggle source
# File lib/tty/option/parser.rb, line 26 def initialize(parameters, **config) @parameters = parameters @config = config end
Public Instance Methods
parse(argv, env)
click to toggle source
# File lib/tty/option/parser.rb, line 31 def parse(argv, env) argv = argv.dup params = {} errors = [] ignored = [] # split argv into processable args and leftovers stop_index = argv.index { |arg| arg.match(ARGUMENT_SEPARATOR) } if stop_index ignored = argv.slice!(stop_index..-1) ignored.shift end PARAMETER_PARSERS.each do |name, parser_type| parser = parser_type.new(parameters.send(name), **config) if name == :environments parsed, argv, err = parser.parse(argv, env) else parsed, argv, err = parser.parse(argv) end params.merge!(parsed) errors.concat(err) end argv += ignored unless ignored.empty? [params, argv, errors] end