# File lib/common/custom_option_parser.rb, line 6 def initialize(banner = nil, width = 32, indent = ' ' * 4) @results = {} @symbols_used = [] super(banner, width, indent) end
param Array option
# File lib/common/custom_option_parser.rb, line 56 def self.option_to_symbol(option) option_name = nil option.each do |option_attr| if option_attr =~ /^--/ option_name = option_attr break end end if option_name option_name = option_name.gsub(/^--/, '').gsub(/-/, '_').gsub(/ .*$/, '') :"#{option_name}" else raise "Could not find the option name for #{option}" end end
param Array(Array) or Array options
# File lib/common/custom_option_parser.rb, line 14 def add(options) if options.is_a?(Array) if options[0].is_a?(Array) options.each do |option| add_option(option) end else add_option(options) end else raise "Options must be at least an Array, or an Array(Array). #{options.class} supplied" end end
param Array option
# File lib/common/custom_option_parser.rb, line 29 def add_option(option) if option.is_a?(Array) option_symbol = CustomOptionParser::option_to_symbol(option) if !@symbols_used.include?(option_symbol) @symbols_used << option_symbol self.on(*option) do |arg| @results[option_symbol] = arg end else raise "The option #{option_symbol} is already used !" end else raise "The option must be an array, #{option.class} supplied : '#{option}'" end end
return Hash
# File lib/common/custom_option_parser.rb, line 48 def results(argv = default_argv) self.parse!(argv) if @results.empty? @results end