Sha256: 76e64991dfe9cce04daf3b23b6d0b609af743cad6b034d0e3eb39a21a5a33fa4
Contents?: true
Size: 1.9 KB
Versions: 2
Compression:
Stored size: 1.9 KB
Contents
# Gems require 'addressable/uri' # Standard Libs require 'optparse' require 'pathname' # Custom Libs require 'opt_parse_validator/hacks' require 'opt_parse_validator/opts' require 'opt_parse_validator/version' require 'opt_parse_validator/options_file' # Gem namespace module OptParseValidator # Validator class OptParser < OptionParser attr_reader :symbols_used, :opts def initialize(banner = nil, width = 32, indent = ' ' * 4) @results = {} @symbols_used = [] @opts = [] super(banner, width, indent) end # @param [ OptBase ] options # # @return [ void ] def add(*options) options.each { |option| add_option(option) } end # @param [ OptBase ] opt # # @return [ void ] def add_option(opt) fail "The option is not an OptBase, #{opt.class} supplied" unless opt.is_a?(OptBase) fail "The option #{opt.to_sym} is already used !" if @symbols_used.include?(opt.to_sym) @opts << opt @symbols_used << opt.to_sym # Set the default option value if it exists @results[opt.to_sym] = opt.default unless opt.default.nil? on(*opt.option) do |arg| begin @results[opt.to_sym] = opt.normalize(opt.validate(arg)) rescue => e # Adds the long option name to the message # e.g --proxy Invalid Scheme format. raise e.class, "#{opt.to_long} #{e}" end end end # @return [ Hash ] def results(argv = default_argv) load_options_files self.parse!(argv) post_processing @results end # Ensure that all required options are supplied # Should be overriden to modify the behavior # # @return [ Void ] def post_processing @opts.each do |opt| next unless opt.required? && !@results.key?(opt.to_sym) fail "The option #{opt.to_sym} is required" end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
opt_parse_validator-0.0.8 | lib/opt_parse_validator.rb |
opt_parse_validator-0.0.7 | lib/opt_parse_validator.rb |