# class CustomOptionParser - RDoc Documentation

# class CustomOptionParser

### Attributes

symbols_used[R]

### Public Class Methods

new(banner = nil, width = 32, indent = ' ' * 4) click to toggle source
Calls superclass method

    # 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

### Protected Class Methods

option_to_symbol(option) click to toggle source

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

### Public Instance Methods

add(options) click to toggle source

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

add_option(option) click to toggle source

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

results(argv = default_argv) click to toggle source

return Hash

    # File lib/common/custom_option_parser.rb, line 48
    def results(argv = default_argv)
      self.parse!(argv) if @results.empty?

      @results
    end