expand documentation

This commit is contained in:
Josh Holtrop 2013-05-02 10:14:09 -04:00
parent 543ce97e10
commit 9b19afea20
2 changed files with 39 additions and 10 deletions

View File

@ -1,17 +1,42 @@
require "yawpa/version" require "yawpa/version"
# Example options configuration: # Yet Another Way to Parse Arguments is an argument-parsing library for Ruby.
# { #
# version: {}, # Yawpa does not try to provide a fancy DSL.
# verbose: {short: 'v'}, # It does not require you to define a class or inherit from a class.
# get: {nargs: 1}, # it just provides a simple functional interface for parsing options,
# set: {nargs: 2}, # supporting subcommands and arbitrary numbers of arguments for each option.
# } #
# == Features
#
# - POSIX or non-POSIX mode (supports subcommands using POSIX mode)
# - Options can require an arbitrary number of parameters
# - Options can be defined with a range specifying the allowed number of parameters
module Yawpa module Yawpa
# Exception class raised when an unknown option is observed
class UnknownOptionException < Exception; end class UnknownOptionException < Exception; end
# Exception class raised when invalid option arguments are observed
class InvalidArgumentsException < Exception; end class InvalidArgumentsException < Exception; end
module_function module_function
# Parse input arguments looking for options according to rules given in flags
#
# This is the main API function for the Yawpa module
#
# Example options configuration:
# {
# version: {},
# verbose: {short: 'v'},
# get: {nargs: 1},
# set: {nargs: 2},
# }
#
# Options that have no special flags should have an empty hash as the value.
# Option flags:
# - short: specify a short option letter to associate with the long option
# - nargs: specify an exact number or range of possible numbers of
# arguments to the option
def parse(params, options, flags = {}) def parse(params, options, flags = {})
options = _massage_options(options) options = _massage_options(options)
opts = {} opts = {}
@ -69,7 +94,8 @@ module Yawpa
return [opts, args] return [opts, args]
end end
def _gather(nargs, start_idx, params, initial, param_key, result) # Internal helper method to gather arguments for an option
def _gather(nargs, start_idx, params, initial, param_key, result) # :nodoc:
n_gathered = 0 n_gathered = 0
if initial and initial != '' if initial and initial != ''
result << initial result << initial
@ -91,7 +117,8 @@ module Yawpa
num_indices_used num_indices_used
end end
def _massage_options(options) # Internal helper method to format the options in a consistent format
def _massage_options(options) # :nodoc:
{}.tap do |newopts| {}.tap do |newopts|
options.each_pair do |k, v| options.each_pair do |k, v|
newkey = k.to_s newkey = k.to_s
@ -104,7 +131,8 @@ module Yawpa
end end
end end
def _find_opt_config_by_short_name(options, short_name) # Internal helper method to find an option configuration by short name
def _find_opt_config_by_short_name(options, short_name) # :nodoc:
options.each_pair do |k, v| options.each_pair do |k, v|
return v if v[:short] == short_name return v if v[:short] == short_name
end end

View File

@ -1,3 +1,4 @@
module Yawpa module Yawpa
# gem version
VERSION = "0.0.1" VERSION = "0.0.1"
end end