diff options
Diffstat (limited to 'doc/option_params/option_params.rdoc')
-rw-r--r-- | doc/option_params/option_params.rdoc | 845 |
1 files changed, 0 insertions, 845 deletions
diff --git a/doc/option_params/option_params.rdoc b/doc/option_params/option_params.rdoc deleted file mode 100644 index 7cf5ef890c..0000000000 --- a/doc/option_params/option_params.rdoc +++ /dev/null @@ -1,845 +0,0 @@ -== Parameters for New Options - -Option-creating methods in \OptionParser -accept arguments that determine the behavior of a new option: - -- OptionParser#on -- OptionParser#on_head -- OptionParser#on_tail -- OptionParser#define -- OptionParser#define_head -- OptionParser#define_tail -- OptionParser#make_switch - -The code examples on this page use: - -- OptionParser#on, to define options. -- OptionParser#parse!, to parse the command line. -- Built-in option <tt>--help</tt>, to display defined options. - -Contents: - -- {Option Names}[#label-Option+Names] - - {Short Names}[#label-Short+Names] - - {Simple Short Names}[#label-Simple+Short+Names] - - {Short Names with Required Arguments}[#label-Short+Names+with+Required+Arguments] - - {Short Names with Optional Arguments}[#label-Short+Names+with+Optional+Arguments] - - {Short Names from Range}[#label-Short+Names+from+Range] - - {Long Names}[#label-Long+Names] - - {Simple Long Names}[#label-Simple+Long+Names] - - {Long Names with Required Arguments}[#label-Long+Names+with+Required+Arguments] - - {Long Names with Optional Arguments}[#label-Long+Names+with+Optional+Arguments] - - {Mixed Names}[#label-Mixed+Names] -- {Argument Styles}[#label-Argument+Styles] -- {Argument Values}[#label-Argument+Values] - - {Explicit Argument Values}[#label-Explicit+Argument+Values] - - {Explicit Values in Array}[#label-Explicit+Values+in+Array] - - {Explicit Values in Hash}[#label-Explicit+Values+in+Hash] - - {Argument Value Patterns}[#label-Argument+Value+Patterns] -- {Argument Converters}[#label-Argument+Converters] - - {Date}[#label-Date] - - {DateTime}[#label-DateTime] - - {Time}[#label-Time] - - {URI}[#label-URI] - - {Shellwords}[#label-Shellwords] - - {Integer}[#label-Integer] - - {Float}[#label-Float] - - {Numeric}[#label-Numeric] - - {DecimalInteger}[#label-DecimalInteger] - - {OctalInteger}[#label-OctalInteger] - - {DecimalNumeric}[#label-DecimalNumeric] - - {TrueClass}[#label-TrueClass] - - {FalseClass}[#label-FalseClass] - - {Object}[#label-Object] - - {String}[#label-String] - - {Array}[#label-Array] - - {Regexp}[#label-Regexp] -- {Descriptions}[#label-Descriptions] -- {Handlers}[#label-Handlers] - - {Handler Blocks}[#label-Handler+Blocks] - - {Handler Procs}[#label-Handler+Procs] - - {Handler Methods}[#label-Handler+Methods] -- {Terminators}[#label-Terminators] - -=== Option Names - -There are two kinds of option names: - -- Short option name, consisting of a single hyphen and a single character. -- Long option name, consisting of two hyphens and one or more characters. - -==== Short Names - -===== Simple Short Names - -File +short_simple.rb+ defines two options: - -- One with short name <tt>-x</tt>. -- The other with two short names, in effect, aliases, <tt>-1</tt> and <tt>-%</tt>. - - :include: short_simple.rb - -Executions: - - $ ruby short_simple.rb --help - Usage: short_simple [options] - -x One short name - -1, -% Two short names (aliases) - $ ruby short_simple.rb -x - ["-x", true] - $ ruby short_simple.rb -1 -x -% - ["-1 or -%", true] - ["-x", true] - ["-1 or -%", true] - -===== Short Names with Required Arguments - -A short name followed (no whitespace) by a dummy word -defines an option that requires an argument. - -File +short_required.rb+ defines an option <tt>-x</tt> -that requires an argument. - - :include: short_required.rb - -Executions: - - $ ruby short_required.rb --help - Usage: short_required [options] - -xXXX Short name with required argument - $ ruby short_required.rb -x - short_required.rb:6:in `<main>': missing argument: -x (OptionParser::MissingArgument) - $ ruby short_required.rb -x FOO - ["-x", "FOO"] - -===== Short Names with Optional Arguments - -A short name followed (with whitespace) by a dummy word in square brackets -defines an option that allows an optional argument. - -File +short_optional.rb+ defines an option <tt>-x</tt> -that allows an optional argument. - - :include: short_optional.rb - -Executions: - - $ ruby short_optional.rb --help - Usage: short_optional [options] - -x [XXX] Short name with optional argument - $ ruby short_optional.rb -x - ["-x", nil] - $ ruby short_optional.rb -x FOO - ["-x", "FOO"] - -===== Short Names from Range - -You can define an option with multiple short names -taken from a range of characters. -The parser yields both the actual character cited and the value. - -File +short_range.rb+ defines an option with short names -for all printable characters from <tt>!</tt> to <tt>~</tt>: - - :include: short_range.rb - -Executions: - - $ ruby short_range.rb --help - Usage: short_range [options] - -[!-~] Short names in (very large) range - $ ruby short_range.rb -! - ["!-~", "!", nil] - $ ruby short_range.rb -! - ["!-~", "!", nil] - $ ruby short_range.rb -A - ["!-~", "A", nil] - $ ruby short_range.rb -z - ["!-~", "z", nil] - -==== Long Names - -===== Simple Long Names - -File +long_simple.rb+ defines two options: - -- One with long name <tt>-xxx</tt>. -- The other with two long names, in effect, aliases, - <tt>--y1%</tt> and <tt>--z2#</tt>. - - :include: long_simple.rb - -Executions: - - $ ruby long_simple.rb --help - Usage: long_simple [options] - --xxx One long name - --y1%, --z2# Two long names (aliases) - $ ruby long_simple.rb --xxx - ["--xxx", true] - $ ruby long_simple.rb --y1% --xxx --z2# - ["--y1% or --z2#", true] - ["--xxx", true] - ["--y1% or --z2#", true] - -===== Long Names with Required Arguments - -A long name followed (with whitespace) by a dummy word -defines an option that requires an argument. - -File +long_required.rb+ defines an option <tt>--xxx</tt> -that requires an argument. - - :include: long_required.rb - -Executions: - - $ ruby long_required.rb --help - Usage: long_required [options] - --xxx XXX Long name with required argument - $ ruby long_required.rb --xxx - long_required.rb:6:in `<main>': missing argument: --xxx (OptionParser::MissingArgument) - $ ruby long_required.rb --xxx FOO - ["--xxx", "FOO"] - -===== Long Names with Optional Arguments - -A long name followed (with whitespace) by a dummy word in square brackets -defines an option that allows an optional argument. - -File +long_optional.rb+ defines an option <tt>--xxx</tt> -that allows an optional argument. - - :include: long_optional.rb - -Executions: - - $ ruby long_optional.rb --help - Usage: long_optional [options] - --xxx [XXX] Long name with optional argument - $ ruby long_optional.rb --xxx - ["--xxx", nil] - $ ruby long_optional.rb --xxx FOO - ["--xxx", "FOO"] - -==== Mixed Names - -An option may have both short and long names. - -File +mixed_names.rb+ defines a mixture of short and long names. - - :include: mixed_names.rb - -Executions: - - $ ruby mixed_names.rb --help - Usage: mixed_names [options] - -x, --xxx Short and long, simple - --yyy yYYY - Short and long, required argument - --zzz zZZZ - Short and long, optional argument - $ ruby mixed_names.rb -x - ["--xxx", true] - $ ruby mixed_names.rb --xxx - ["--xxx", true] - $ ruby mixed_names.rb -y - mixed_names.rb:12:in `<main>': missing argument: -y (OptionParser::MissingArgument) - $ ruby mixed_names.rb -y FOO - ["--yyy", "FOO"] - $ ruby mixed_names.rb --yyy - mixed_names.rb:12:in `<main>': missing argument: --yyy (OptionParser::MissingArgument) - $ ruby mixed_names.rb --yyy BAR - ["--yyy", "BAR"] - $ ruby mixed_names.rb -z - ["--zzz", nil] - $ ruby mixed_names.rb -z BAZ - ["--zzz", "BAZ"] - $ ruby mixed_names.rb --zzz - ["--zzz", nil] - $ ruby mixed_names.rb --zzz BAT - ["--zzz", "BAT"] - -=== Argument Keywords - -As seen above, a given option name string may itself -indicate whether the option has no argument, a required argument, -or an optional argument. - -An alternative is to use a separate symbol keyword, -which is one of <tt>:NONE</tt> (the default), -<tt>:REQUIRED</tt>, <tt>:OPTIONAL</tt>. - -File +argument_keywords.rb+ defines an option with a required argument. - - :include: argument_keywords.rb - -Executions: - - $ ruby argument_keywords.rb --help - Usage: argument_keywords [options] - -x, --xxx Required argument - $ ruby argument_styles.rb --xxx - argument_styles.rb:6:in `<main>': missing argument: --xxx (OptionParser::MissingArgument) - $ ruby argument_styles.rb --xxx FOO - ["--xxx", "FOO"] - -=== Argument Strings - -Still another way to specify a required argument -is to define it in a string separate from the name string. - -File +argument_strings.rb+ defines an option with a required argument. - - :include: argument_strings.rb - -Executions: - - $ ruby argument_strings.rb --help - Usage: argument_strings [options] - -x, --xxx=XXX Required argument - $ ruby argument_strings.rb --xxx - argument_strings.rb:9:in `<main>': missing argument: --xxx (OptionParser::MissingArgument) - $ ruby argument_strings.rb --xxx FOO - ["--xxx", "FOO"] - -=== Argument Values - -Permissible argument values may be restricted -either by specifying explicit values -or by providing a pattern that the given value must match. - -==== Explicit Argument Values - -You can specify argument values in either of two ways: - -- Specify values an array of strings. -- Specify values a hash. - -===== Explicit Values in Array - -You can specify explicit argument values in an array of strings. -The argument value must be one of those strings. - -File +explicit_array_values.rb+ defines options with explicit argument values. - - :include: explicit_array_values.rb - -Executions: - - $ ruby explicit_array_values.rb --help - Usage: explicit_array_values [options] - -xXXX Values for required argument - -y [YYY] Values for optional argument - $ ruby explicit_array_values.rb -x - explicit_array_values.rb:9:in `<main>': missing argument: -x (OptionParser::MissingArgument) - $ ruby explicit_array_values.rb -x foo - ["-x", "foo"] - $ ruby explicit_array_values.rb -x bar - ["-x", "bar"] - $ ruby explicit_array_values.rb -x baz - explicit_array_values.rb:9:in `<main>': invalid argument: -x baz (OptionParser::InvalidArgument) - - -===== Explicit Values in Hash - -You can specify explicit argument values in a hash with string keys. -The value passed must be one of those keys, -and the value yielded will be the value for that key. - -File +explicit_hash_values.rb+ defines options with explicit argument values. - - :include: explicit_hash_values.rb - -Executions: - - $ ruby explicit_hash_values.rb --help - Usage: explicit_hash_values [options] - -xXXX Values for required argument - -y [YYY] Values for optional argument - $ ruby explicit_hash_values.rb -x - explicit_hash_values.rb:9:in `<main>': missing argument: -x (OptionParser::MissingArgument) - $ ruby explicit_hash_values.rb -x foo - ["-x", 0] - $ ruby explicit_hash_values.rb -x bar - ["-x", 1] - $ ruby explicit_hash_values.rb -x baz - explicit_hash_values.rb:9:in `<main>': invalid argument: -x baz (OptionParser::InvalidArgument) - $ ruby explicit_hash_values.rb -y - ["-y", nil] - $ ruby explicit_hash_values.rb -y baz - ["-y", 2] - $ ruby explicit_hash_values.rb -y bat - ["-y", 3] - $ ruby explicit_hash_values.rb -y bam - ["-y", nil] - -==== Argument Value Patterns - -You can restrict permissible argument values -by specifying a Regexp that the given argument must match. - -File +matched_values.rb+ defines options with matched argument values. - - :include: matched_values.rb - -Executions: - - $ ruby matched_values.rb --help - Usage: matched_values [options] - --xxx XXX Matched values - $ ruby matched_values.rb --xxx foo - ["--xxx", "foo"] - $ ruby matched_values.rb --xxx FOO - ["--xxx", "FOO"] - $ ruby matched_values.rb --xxx bar - matched_values.rb:6:in `<main>': invalid argument: --xxx bar (OptionParser::InvalidArgument) - -=== Argument Converters - -An option can specify that its argument is to be converted -from the default \String to an instance of another class. - -\OptionParser has a number of built-in converters, -which are demonstrated below. - -==== \Date - -File +date.rb+ -defines an option whose argument is to be converted to a \Date object. -The argument is converted by method -{Date.parse}[https://ruby-doc.org/stdlib/libdoc/date/rdoc/Date.html#method-c-parse]. - - :include: date.rb - -Executions: - - $ ruby date.rb --date 2001-02-03 - [#<Date: 2001-02-03 ((2451944j,0s,0n),+0s,2299161j)>, Date] - $ ruby date.rb --date 20010203 - [#<Date: 2001-02-03 ((2451944j,0s,0n),+0s,2299161j)>, Date] - $ ruby date.rb --date "3rd Feb 2001" - [#<Date: 2001-02-03 ((2451944j,0s,0n),+0s,2299161j)>, Date] - -==== \DateTime - -File +datetime.rb+ -defines an option whose argument is to be converted to a \DateTime object. -The argument is converted by method -{DateTime.parse}[https://ruby-doc.org/stdlib-2.6.1/libdoc/date/rdoc/DateTime.html#method-c-parse]. - - :include: datetime.rb - -Executions: - - $ ruby datetime.rb --datetime 2001-02-03T04:05:06+07:00 - [#<DateTime: 2001-02-03T04:05:06+07:00 ((2451943j,75906s,0n),+25200s,2299161j)>, DateTime] - $ ruby datetime.rb --datetime 20010203T040506+0700 - [#<DateTime: 2001-02-03T04:05:06+07:00 ((2451943j,75906s,0n),+25200s,2299161j)>, DateTime] - $ ruby datetime.rb --datetime "3rd Feb 2001 04:05:06 PM" - [#<DateTime: 2001-02-03T16:05:06+00:00 ((2451944j,57906s,0n),+0s,2299161j)>, DateTime] - -==== \Time - -File +time.rb+ -defines an option whose argument is to be converted to a \Time object. -The argument is converted by method -{Time.httpdate}[https://ruby-doc.org/stdlib-2.7.0/libdoc/time/rdoc/Time.html#method-c-httpdate] or -{Time.parse}[https://ruby-doc.org/stdlib-2.7.0/libdoc/time/rdoc/Time.html#method-c-parse]. - - :include: time.rb - -Executions: - - $ ruby time.rb --time "Thu, 06 Oct 2011 02:26:12 GMT" - [2011-10-06 02:26:12 UTC, Time] - $ ruby time.rb --time 2010-10-31 - [2010-10-31 00:00:00 -0500, Time] - -==== \URI - -File +uri.rb+ -defines an option whose argument is to be converted to a \URI object. -The argument is converted by method -{URI.parse}[https://ruby-doc.org/stdlib-2.7.2/libdoc/uri/rdoc/URI.html#method-c-parse]. - - :include: uri.rb - -Executions: - - $ ruby uri.rb --uri https://github.com - [#<URI::HTTPS https://github.com>, URI::HTTPS] - $ ruby uri.rb --uri http://github.com - [#<URI::HTTP http://github.com>, URI::HTTP] - $ ruby uri.rb --uri file://~/var - [#<URI::File file://~/var>, URI::File] - -==== \Shellwords - -File +shellwords.rb+ -defines an option whose argument is to be converted to an \Array object by method -{Shellwords.shellwords}[https://ruby-doc.org/stdlib-2.7.0/libdoc/shellwords/rdoc/Shellwords.html#method-c-shellwords]. - - :include: shellwords.rb - -Executions: - - $ ruby shellwords.rb --shellwords "ruby my_prog.rb | less" - [["ruby", "my_prog.rb", "|", "less"], Array] - $ ruby shellwords.rb --shellwords "here are 'two words'" - [["here", "are", "two words"], Array] - -==== \Integer - -File +integer.rb+ -defines an option whose argument is to be converted to an \Integer object. -The argument is converted by method -{Kernel.Integer}[https://ruby-doc.org/core/Kernel.html#method-i-Integer]. - - :include: integer.rb - -Executions: - - $ ruby integer.rb --integer 100 - [100, Integer] - $ ruby integer.rb --integer -100 - [-100, Integer] - $ ruby integer.rb --integer 0100 - [64, Integer] - $ ruby integer.rb --integer 0x100 - [256, Integer] - $ ruby integer.rb --integer 0b100 - [4, Integer] - -==== \Float - -File +float.rb+ -defines an option whose argument is to be converted to a \Float object. -The argument is converted by method -{Kernel.Float}[https://ruby-doc.org/core/Kernel.html#method-i-Float]. - - :include: float.rb - -Executions: - - $ ruby float.rb --float 1 - [1.0, Float] - $ ruby float.rb --float 3.14159 - [3.14159, Float] - $ ruby float.rb --float 1.234E2 - [123.4, Float] - $ ruby float.rb --float 1.234E-2 - [0.01234, Float] - -==== \Numeric - -File +numeric.rb+ -defines an option whose argument is to be converted to an instance -of \Rational, \Float, or \Integer. -The argument is converted by method -{Kernel.Rational}[https://ruby-doc.org/core/Kernel.html#method-i-Rational], -{Kernel.Float}[https://ruby-doc.org/core/Kernel.html#method-i-Float], or -{Kernel.Integer}[https://ruby-doc.org/core/Kernel.html#method-i-Integer]. - - :include: numeric.rb - -Executions: - - $ ruby numeric.rb --numeric 1/3 - [(1/3), Rational] - $ ruby numeric.rb --numeric 3.333E-1 - [0.3333, Float] - $ ruby numeric.rb --numeric 3 - [3, Integer] - -==== \DecimalInteger - -File +decimal_integer.rb+ -defines an option whose argument is to be converted to an \Integer object. -The argument is converted by method -{Kernel.Integer}[https://ruby-doc.org/core/Kernel.html#method-i-Integer]. - - :include: decimal_integer.rb - -The argument may not be in a binary or hexadecimal format; -a leading zero is ignored (not parsed as octal). - -Executions: - - $ ruby decimal_integer.rb --decimal_integer 100 - [100, Integer] - $ ruby decimal_integer.rb --decimal_integer -100 - [-100, Integer] - $ ruby decimal_integer.rb --decimal_integer 0100 - [100, Integer] - $ ruby decimal_integer.rb --decimal_integer -0100 - [-100, Integer] - -==== \OctalInteger - -File +octal_integer.rb+ -defines an option whose argument is to be converted to an \Integer object. -The argument is converted by method -{Kernel.Integer}[https://ruby-doc.org/core/Kernel.html#method-i-Integer]. - - :include: octal_integer.rb - -The argument may not be in a binary or hexadecimal format; -it is parsed as octal, regardless of whether it has a leading zero. - -Executions: - - $ ruby octal_integer.rb --octal_integer 100 - [64, Integer] - $ ruby octal_integer.rb --octal_integer -100 - [-64, Integer] - $ ruby octal_integer.rb --octal_integer 0100 - [64, Integer] - -==== \DecimalNumeric - -File +decimal_numeric.rb+ -defines an option whose argument is to be converted to an \Integer object. -The argument is converted by method -{Kernel.Integer}[https://ruby-doc.org/core/Kernel.html#method-i-Integer]. - - :include: decimal_numeric.rb - -The argument may not be in a binary or hexadecimal format; -a leading zero causes the argument to be parsed as octal. - -Executions: - - $ ruby decimal_numeric.rb --decimal_numeric 100 - [100, Integer] - $ ruby decimal_numeric.rb --decimal_numeric -100 - [-100, Integer] - $ ruby decimal_numeric.rb --decimal_numeric 0100 - [64, Integer] - -==== \TrueClass - -File +true_class.rb+ -defines an option whose argument is to be converted to +true+ or +false+. -The argument is evaluated by method -{Object#nil?}[https://ruby-doc.org/core-3.0.0/Object.html#method-i-nil-3F]. - - :include: true_class.rb - -The argument may be any of those shown in the examples below. - -Executions: - - $ ruby true_class.rb --true_class true - [true, TrueClass] - $ ruby true_class.rb --true_class yes - [true, TrueClass] - $ ruby true_class.rb --true_class + - [true, TrueClass] - $ ruby true_class.rb --true_class false - [false, FalseClass] - $ ruby true_class.rb --true_class no - [false, FalseClass] - $ ruby true_class.rb --true_class - - [false, FalseClass] - $ ruby true_class.rb --true_class nil - [false, FalseClass] - -==== \FalseClass - -File +false_class.rb+ -defines an option whose argument is to be converted to +true+ or +false+. -The argument is evaluated by method -{Object#nil?}[https://ruby-doc.org/core-3.0.0/Object.html#method-i-nil-3F]. - - :include: false_class.rb - -The argument may be any of those shown in the examples below. - -Executions: - - $ ruby false_class.rb --false_class false - [false, FalseClass] - $ ruby false_class.rb --false_class no - [false, FalseClass] - $ ruby false_class.rb --false_class - - [false, FalseClass] - $ ruby false_class.rb --false_class nil - [false, FalseClass] - $ ruby false_class.rb --false_class true - [true, TrueClass] - $ ruby false_class.rb --false_class yes - [true, TrueClass] - $ ruby false_class.rb --false_class + - [true, TrueClass] - -==== \Object - -File +object.rb+ -defines an option whose argument is not to be converted from \String. - - :include: object.rb - -Executions: - - $ ruby object.rb --object foo - ["foo", String] - $ ruby object.rb --object nil - ["nil", String] - -==== \String - -File +string.rb+ -defines an option whose argument is not to be converted from \String. - - :include: string.rb - -Executions: - - $ ruby string.rb --string foo - ["foo", String] - $ ruby string.rb --string nil - ["nil", String] - -==== \Array - -File +array.rb+ -defines an option whose argument is to be converted from \String -to an array of strings, based on comma-separated substrings. - - :include: array.rb - -Executions: - - $ ruby array.rb --array "" - [[], Array] - $ ruby array.rb --array foo,bar,baz - [["foo", "bar", "baz"], Array] - $ ruby array.rb --array "foo, bar, baz" - [["foo", " bar", " baz"], Array] - -==== \Regexp - -File +regexp.rb+ -defines an option whose argument is to be converted to a \Regexp object. - - :include: regexp.rb - -Executions: - - $ ruby regexp.rb --regexp foo - -=== Descriptions - -A description parameter is any string parameter -that is not recognized as an -{option name}[#label-Option+Names] or a -{terminator}[#label-Terminators]; -in other words, it does not begin with a hypnen. - -You may give any number of description parameters; -each becomes a line in the text generated by option <tt>--help</tt>. - -File +descriptions.rb+ has six strings in its array +descriptions+. -These are all passed as parameters to OptionParser#on, so that they -all, line for line, become the option's description. - - :include: descriptions.rb - -Executions: - - $ ruby descriptions.rb --help - Usage: descriptions [options] - --xxx Lorem ipsum dolor sit amet, consectetuer - adipiscing elit. Aenean commodo ligula eget. - Aenean massa. Cum sociis natoque penatibus - et magnis dis parturient montes, nascetur - ridiculus mus. Donec quam felis, ultricies - nec, pellentesque eu, pretium quis, sem. - $ ruby descriptions.rb --xxx - ["--xxx", true] - -=== Handlers - -The handler for an option is an executable that will be called -when the option is encountered. The handler may be: - -- A block (this is most often seen). -- A proc. -- A method. - -==== Handler Blocks - -An option hadler may be a block. - -File +block.rb+ defines an option that has a handler block. - - :include: block.rb - -Executions: - - $ ruby block.rb --help - Usage: block [options] - --xxx Option with no argument - --yyy YYY Option with required argument - $ ruby block.rb --xxx - ["Handler block for -xxx called with value:", true] - $ ruby block.rb --yyy FOO - ["Handler block for -yyy called with value:", "FOO"] - -==== Handler Procs - -An option handler may be a Proc. - -File +proc.rb+ defines an option that has a handler proc. - - :include: proc.rb - -Executions: - - $ ruby proc.rb --help - Usage: proc [options] - --xxx Option with no argument - --yyy YYY Option with required argument - $ ruby proc.rb --xxx - ["Handler proc for -xxx called with value:", true] - $ ruby proc.rb --yyy FOO - ["Handler proc for -yyy called with value:", "FOO"] - -==== Handler Methods - -An option handler may be a Method. - -File +proc.rb+ defines an option that has a handler method. - - :include: method.rb - -Executions: - - $ ruby method.rb --help - Usage: method [options] - --xxx Option with no argument - --yyy YYY Option with required argument - $ ruby method.rb --xxx - ["Handler method for -xxx called with value:", true] - $ ruby method.rb --yyy FOO - ["Handler method for -yyy called with value:", "FOO"] - -=== Terminators - -And finally, the terminator parameter <tt>--</tt> tells the options parser -to ignore any options farther to the right. -This can be useful if there are options not meant for the current program. - -File +terminator.rb+ defines one option <tt>--my_option</tt>. - - :include: terminator.rb - -The first execution fails because <tt>--nosuch</tt> is not a defined option; -the second succeeds because <tt>--</tt> causes that option to be ignored: - - $ ruby terminator.rb --my_option FOO --other_option BAR - ["FOO", String] - terminator.rb:6:in `<main>': invalid option: --other_option (OptionParser::InvalidOption) - $ ruby terminator.rb --my_option FOO -- --other_option BAR - ["FOO", String] |