class Rclopts::RequiredArgOptionParser
Public Class Methods
new()
click to toggle source
Calls superclass method
# File lib/rclopts/required_arg_option_parser.rb, line 9 def initialize @required_arg_names = Set.new super end
Public Instance Methods
on(*args, &block)
click to toggle source
Calls superclass method
# File lib/rclopts/required_arg_option_parser.rb, line 32 def on(*args, &block) super *args do |value| block.call(@options, value) end end
on_required(*args, &block)
click to toggle source
# File lib/rclopts/required_arg_option_parser.rb, line 14 def on_required(*args, &block) arg_name = nil args.each do |arg| if arg =~ /^((--\w+)(-\w+)*)/ arg_name = $1 break end end raise ArgumentError.new('Could not determine argument name') unless arg_name @required_arg_names << arg_name on *args do |options, value| @missing_arg_names.delete arg_name block.call(options, value) end end
on_tail(*args, &block)
click to toggle source
Calls superclass method
# File lib/rclopts/required_arg_option_parser.rb, line 38 def on_tail(*args, &block) super *args do block.call(@options) end end
process_args(args)
click to toggle source
# File lib/rclopts/required_arg_option_parser.rb, line 44 def process_args(args) @missing_arg_names = @required_arg_names.clone @options = OpenStruct.new free_args = args.clone begin parse!(free_args) rescue OptionParser::InvalidOption, OptionParser::MissingArgument message = $!.to_s + "\n\n" + self.to_s raise RequiredArgOptionParserError.new(message) end if !@missing_arg_names.empty? message = "missing required option: #{@missing_arg_names.to_a.sort.join(', ')}\n\n" + self.to_s raise RequiredArgOptionParserError.new(message) end [@options, free_args] end