Sha256: ff7cc8a5a32d1d67424cc907492868f7d9b893f47df39e31895a04ae025ba385

Contents?: true

Size: 616 Bytes

Versions: 2

Compression:

Stored size: 616 Bytes

Contents

require 'hashstruct'

class SimpleOptionParser

  attr_accessor :defaults

  def self.parse(argv, defaults={})
    new(defaults).parse(argv)
  end

  def initialize(defaults={})
    @defaults = defaults
  end

  def parse(argv)
    options = {}
    while argv.first =~ %r{^--([\w\-]+)(?:=(.*))?$}
      key, value = $1, $2
      key = key.gsub('-', '_').to_sym
      value = if value.nil?
        true
      elsif options.has_key?(key)
        [options[key], value].flatten
      else
        value
      end
      options[key] = value
      argv.shift
    end
    HashStruct.new(@defaults.merge(options))
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
simple_option_parser-0.8 lib/simple_option_parser.rb
simple_option_parser-0.7 lib/simple_option_parser.rb