class OptionParser
OptionParser
New to OptionParser?
See the Tutorial.
Introduction
OptionParser is a class for command-line option analysis. It is much more advanced, yet also easier to use, than GetoptLong, and is a more Ruby-oriented solution.
Features
-
The argument specification and the code to handle it are written in the same place.
-
It can output an option summary; you donβt need to maintain this string separately.
-
Optional and mandatory arguments are specified very gracefully.
-
Arguments can be automatically converted to a specified class.
-
Arguments can be restricted to a certain set.
All of these features are demonstrated in the examples below. See
make_switch for full documentation.
Minimal example
require 'optparse' options = {} OptionParser.new do |parser| parser.banner = "Usage: example.rb [options]" parser.on("-v", "--[no-]verbose", "Run verbosely") do |v| options[:verbose] = v end end.parse! p options p ARGV
Generating Help
OptionParser can be used to automatically generate help for the commands you write:
require 'optparse' Options = Struct.new(:name) class Parser def self.parse(options) args = Options.new("world") opt_parser = OptionParser.new do |parser| parser.banner = "Usage: example.rb [options]" parser.on("-nNAME", "--name=NAME", "Name to say hello to") do |n| args.name = n end parser.on("-h", "--help", "Prints this help") do puts parser exit end end opt_parser.parse!(options) return args end end options = Parser.parse %w[--help] #=> # Usage: example.rb [options] # -n, --name=NAME Name to say hello to # -h, --help Prints this help
Required Arguments
For options that require an argument, option specification strings may include an option name in all caps. If an option is used without the required argument, an exception will be raised.
require 'optparse' options = {} OptionParser.new do |parser| parser.on("-r", "--require LIBRARY", "Require the LIBRARY before executing your script") do |lib| puts "You required #{lib}!" end end.parse!
Used:
$ ruby optparse-test.rb -r optparse-test.rb:9:in '<main>': missing argument: -r (OptionParser::MissingArgument) $ ruby optparse-test.rb -r my-library You required my-library!
Type Coercion
OptionParser supports the ability to coerce command line arguments into objects for us.
OptionParser comes with a few ready-to-use kinds of type coercion. They are:
-
Dateβ Anything accepted byDate.parse(need to requireoptparse/date) -
DateTimeβ Anything accepted byDateTime.parse(need to requireoptparse/date) -
Timeβ Anything accepted byTime.httpdateorTime.parse(need to requireoptparse/time) -
URIβ Anything accepted byURI.parse(need to requireoptparse/uri) -
Shellwordsβ Anything accepted byShellwords.shellwords(need to requireoptparse/shellwords) -
Stringβ Any non-empty string -
Integerβ Any integer. Will convert octal. (e.g. 124, -3, 040) -
Floatβ Any float. (e.g. 10, 3.14, -100E+13) -
Numericβ Any integer, float, or rational (1, 3.4, 1/3) -
DecimalInteger β Like
Integer, but no octal format. -
OctalInteger β Like
Integer, but no decimal format. -
DecimalNumeric β Decimal integer or float.
-
TrueClassβ Accepts β+, yes, true, -, no, falseβ and defaults astrue -
FalseClassβ Same asTrueClass, but defaults tofalse -
Arrayβ Strings separated by β,β (e.g. 1,2,3) -
Regexpβ Regular expressions. Also includes options.
We can also add our own coercions, which we will cover below.
Using Built-in Conversions
As an example, the built-in Time conversion is used. The other built-in conversions behave in the same way. OptionParser will attempt to parse the argument as a Time. If it succeeds, that time will be passed to the handler block. Otherwise, an exception will be raised.
require 'optparse' require 'optparse/time' OptionParser.new do |parser| parser.on("-t", "--time [TIME]", Time, "Begin execution at given time") do |time| p time end end.parse!
Used:
$ ruby optparse-test.rb -t nonsense ... invalid argument: -t nonsense (OptionParser::InvalidArgument) $ ruby optparse-test.rb -t 10-11-12 2010-11-12 00:00:00 -0500 $ ruby optparse-test.rb -t 9:30 2014-08-13 09:30:00 -0400
Creating Custom Conversions
The accept method on OptionParser may be used to create converters. It specifies which conversion block to call whenever a class is specified. The example below uses it to fetch a User object before the on handler receives it.
require 'optparse' User = Struct.new(:id, :name) def find_user id not_found = ->{ raise "No User Found for id #{id}" } [ User.new(1, "Sam"), User.new(2, "Gandalf") ].find(not_found) do |u| u.id == id end end op = OptionParser.new op.accept(User) do |user_id| find_user user_id.to_i end op.on("--user ID", User) do |user| puts user end op.parse!
Used:
$ ruby optparse-test.rb --user 1 #<struct User id=1, name="Sam"> $ ruby optparse-test.rb --user 2 #<struct User id=2, name="Gandalf"> $ ruby optparse-test.rb --user 3 optparse-test.rb:15:in 'block in find_user': No User Found for id 3 (RuntimeError)
Store options to a Hash
The into option of order, parse and so on methods stores command line options into a Hash.
require 'optparse' options = {} OptionParser.new do |parser| parser.on('-a') parser.on('-b NUM', Integer) parser.on('-v', '--verbose') end.parse!(into: options) p options
Used:
$ ruby optparse-test.rb -a
{:a=>true}
$ ruby optparse-test.rb -a -v
{:a=>true, :verbose=>true}
$ ruby optparse-test.rb -a -b 100
{:a=>true, :b=>100}
Complete example
The following example is a complete Ruby program. You can run it and see the effect of specifying various options. This is probably the best way to learn the features of optparse.
require 'optparse' require 'optparse/time' require 'ostruct' require 'pp' class OptparseExample Version = '1.0.0' CODES = %w[iso-2022-jp shift_jis euc-jp utf8 binary] CODE_ALIASES = { "jis" => "iso-2022-jp", "sjis" => "shift_jis" } class ScriptOptions attr_accessor :library, :inplace, :encoding, :transfer_type, :verbose, :extension, :delay, :time, :record_separator, :list def initialize self.library = [] self.inplace = false self.encoding = "utf8" self.transfer_type = :auto self.verbose = false end def define_options(parser) parser.banner = "Usage: example.rb [options]" parser.separator "" parser.separator "Specific options:" # add additional options perform_inplace_option(parser) delay_execution_option(parser) execute_at_time_option(parser) specify_record_separator_option(parser) list_example_option(parser) specify_encoding_option(parser) optional_option_argument_with_keyword_completion_option(parser) boolean_verbose_option(parser) parser.separator "" parser.separator "Common options:" # No argument, shows at tail. This will print an options summary. # Try it and see! parser.on_tail("-h", "--help", "Show this message") do puts parser exit end # Another typical switch to print the version. parser.on_tail("--version", "Show version") do puts Version exit end end def perform_inplace_option(parser) # Specifies an optional option argument parser.on("-i", "--inplace [EXTENSION]", "Edit ARGV files in place", "(make backup if EXTENSION supplied)") do |ext| self.inplace = true self.extension = ext || '' self.extension.sub!(/\A\.?(?=.)/, ".") # Ensure extension begins with dot. end end def delay_execution_option(parser) # Cast 'delay' argument to a Float. parser.on("--delay N", Float, "Delay N seconds before executing") do |n| self.delay = n end end def execute_at_time_option(parser) # Cast 'time' argument to a Time object. parser.on("-t", "--time [TIME]", Time, "Begin execution at given time") do |time| self.time = time end end def specify_record_separator_option(parser) # Cast to octal integer. parser.on("-F", "--irs [OCTAL]", OptionParser::OctalInteger, "Specify record separator (default \\0)") do |rs| self.record_separator = rs end end def list_example_option(parser) # List of arguments. parser.on("--list x,y,z", Array, "Example 'list' of arguments") do |list| self.list = list end end def specify_encoding_option(parser) # Keyword completion. We are specifying a specific set of arguments (CODES # and CODE_ALIASES - notice the latter is a Hash), and the user may provide # the shortest unambiguous text. code_list = (CODE_ALIASES.keys + CODES).join(', ') parser.on("--code CODE", CODES, CODE_ALIASES, "Select encoding", "(#{code_list})") do |encoding| self.encoding = encoding end end def optional_option_argument_with_keyword_completion_option(parser) # Optional '--type' option argument with keyword completion. parser.on("--type [TYPE]", [:text, :binary, :auto], "Select transfer type (text, binary, auto)") do |t| self.transfer_type = t end end def boolean_verbose_option(parser) # Boolean switch. parser.on("-v", "--[no-]verbose", "Run verbosely") do |v| self.verbose = v end end end # # Return a structure describing the options. # def parse(args) # The options specified on the command line will be collected in # *options*. @options = ScriptOptions.new @args = OptionParser.new do |parser| @options.define_options(parser) parser.parse!(args) end @options end attr_reader :parser, :options end # class OptparseExample example = OptparseExample.new options = example.parse(ARGV) pp options # example.options pp ARGV
Shell Completion
For modern shells (e.g. bash, zsh, etc.), you can use shell completion for command line options.
Further documentation
The above examples, along with the accompanying Tutorial, should be enough to learn how to use this class. If you have any questions, file a ticket at bugs.ruby-lang.org.
Attributes
Strings to be parsed in default.
Program name to be emitted in error message and default banner, defaults to $0.
boolish
Whether to raise at unknown option.
boolish
Whether to require that options match exactly (disallows providing abbreviated long option as short option).
Program name to be emitted in error message and default banner, defaults to $0.
Width for option list portion of summary. Must be Numeric.
Version
Public Class Methods
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 402
def self.accept: (Class t, ?_Pattern pat) ?{ (*untyped) -> untyped } -> void
See accept.
(*String options) → Hash[String, untyped]
(Array[String] args, *String options) → Hash[String, untyped]
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 410
def self.getopts: (*String options) -> Hash[String, untyped]
| (Array[String] args, *String options) -> Hash[String, untyped]
See getopts.
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 419
def self.inc: (untyped arg, ?_ToI default) -> Integer?
Returns an incremented value of default according to arg.
(?String banner, ?Integer width, ?String indent) ?{ (OptionParser) → void } → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 1027
def initialize: (?String banner, ?Integer width, ?String indent) ?{ (OptionParser) -> void } -> void
Initializes the instance and yields itself if called with a block.
banner-
Banner message.
width-
Summary width.
indent-
Summary indent.
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 427
def self.reject: (Class t) -> void
See reject.
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 435
def self.terminate: (?String arg) -> bot
See terminate.
() → OptionParser::List
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 445
def self.top: () -> OptionParser::List
Returns the global top option list.
Do not use directly.
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 458
def self.with: (?String banner, ?Integer width, ?String indent) ?{ (instance opts) -> void } -> instance
Public Instance Methods
(?_ToS mesg) → bot
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 472
def abort: (?_ToS mesg) -> bot
Shows message with the program name then aborts.
mesg-
Message, defaulted to +$!+.
See Kernel#abort.
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 490
def accept: (Class t, ?_Pattern pat) ?{ (*untyped) -> untyped } -> void
Directs to accept specified class t. The argument string is passed to the block in which it should be converted to the desired class.
t-
Argument class specifier, any object including
Class. pat-
Pattern for argument, defaults to
tif it responds to match.
accept(t, pat, &block)
() → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 492
def add_officious: () -> void
(untyped typ, untyped opt) → String?
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 500
def additional_message: (untyped typ, untyped opt) -> String?
Returns additional info.
() → List
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 513
def base: () -> List
Subject of on_tail.
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 521
def candidate: (String word) -> Array[untyped]
Return candidates for word.
(untyped typ, untyped opt, ?untyped icase, *untyped pat) → untyped
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 1010
def complete: (untyped typ, untyped opt, ?untyped icase, *untyped pat) -> untyped
Completes shortened long style option switch and returns pair of canonical switch and switch descriptor OptionParser::Switch.
typ-
Searching table.
opt: Searching key.icase: Search case insensitive if true.pat: Optional pattern for completion.
(untyped to, ?untyped name) → untyped
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 523
def compsys: (untyped to, ?untyped name) -> untyped
(*String params) ?{ (*untyped) → untyped } → untyped
(String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc) ?{ (*untyped) → untyped } → untyped
(*String params, Proc | Method handler) → untyped
(String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc, Proc | Method handler) → untyped
(*String params) ?{ (*untyped) → untyped } → untyped
(String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc) ?{ (*untyped) → untyped } → untyped
(*String params, Proc | Method handler) → untyped
(String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc, Proc | Method handler) → untyped
(*String params) ?{ (*untyped) → untyped } → untyped
(String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc) ?{ (*untyped) → untyped } → untyped
(*String params, Proc | Method handler) → untyped
(String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc, Proc | Method handler) → untyped
(*String params) ?{ (*untyped) → untyped } → untyped
(String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc) ?{ (*untyped) → untyped } → untyped
(*String params, Proc | Method handler) → untyped
(String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc, Proc | Method handler) → untyped
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 563
def define: (*String params) ?{ (*untyped) -> untyped } -> untyped
| (String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc) ?{ (*untyped) -> untyped } -> untyped
| (*String params, Proc | Method handler) -> untyped
| (String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc, Proc | Method handler) -> untyped
Creates an option from the given parameters params. See Parameters for New Options.
The block, if given, is the handler for the created option. When the option is encountered during command-line parsing, the block is called with the argument given for the option, if any. See Option Handlers.
(*String params) ?{ (*untyped) → untyped } → untyped
(String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc) ?{ (*untyped) → untyped } → untyped
(*String params, Proc | Method handler) → untyped
(String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc, Proc | Method handler) → untyped
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 580
def define_head: (*String params) ?{ (*untyped) -> untyped } -> untyped
| (String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc) ?{ (*untyped) -> untyped } -> untyped
| (*String params, Proc | Method handler) -> untyped
| (String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc, Proc | Method handler) -> untyped
Creates an option from the given parameters params. See Parameters for New Options.
The block, if given, is the handler for the created option. When the option is encountered during command-line parsing, the block is called with the argument given for the option, if any. See Option Handlers.
(*String params) ?{ (*untyped) → untyped } → untyped
(String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc) ?{ (*untyped) → untyped } → untyped
(*String params, Proc | Method handler) → untyped
(String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc, Proc | Method handler) → untyped
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 597
def define_tail: (*String params) ?{ (*untyped) -> untyped } -> untyped
| (String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc) ?{ (*untyped) -> untyped } -> untyped
| (*String params, Proc | Method handler) -> untyped
| (String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc, Proc | Method handler) -> untyped
Creates an option from the given parameters params. See Parameters for New Options.
The block, if given, is the handler for the created option. When the option is encountered during command-line parsing, the block is called with the argument given for the option, if any. See Option Handlers.
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 611
def environment: (?String env) -> Array[String]?
Parses environment variable env or its uppercase with splitting like a shell.
env defaults to the basename of the program.
(*String options) → Hash[String, untyped]
(Array[String] args, *String options) → Hash[String, untyped]
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 636
def getopts: (*String options) -> Hash[String, untyped]
| (Array[String] args, *String options) -> Hash[String, untyped]
Wrapper method for getopts.rb.
params = ARGV.getopts("ab:", "foo", "bar:", "zot:Z;zot option") # params["a"] = true # -a # params["b"] = "1" # -b1 # params["foo"] = "1" # --foo # params["bar"] = "x" # --bar x # params["zot"] = "z" # --zot Z
Option symbolize_names (boolean) specifies whether returned Hash keys should be Symbols; defaults to false (use Strings).
params = ARGV.getopts("ab:", "foo", "bar:", "zot:Z;zot option", symbolize_names: true) # params[:a] = true # -a # params[:b] = "1" # -b1 # params[:foo] = "1" # --foo # params[:bar] = "x" # --bar x # params[:zot] = "z" # --zot Z
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 645
def help: () -> String
Returns option summary string.
(*untyped args) → untyped
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 653
def inc: (*untyped args) -> untyped
See self.inc
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 669
def load: (?String filename) -> bool
Loads options from file names as filename. Does nothing when the file is not present. Returns whether successfully loaded.
filename defaults to basename of the program without suffix in a directory ~/.options, then the basename with β.optionsβ suffix under XDG and Haiku standard places.
The optional into keyword argument works exactly like that accepted in method parse.
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 683
def make_switch: (Array[untyped] opts, ?Proc block) -> [ untyped, untyped, untyped, untyped, untyped ]
Creates an option from the given parameters params. See Parameters for New Options.
The block, if given, is the handler for the created option. When the option is encountered during command-line parsing, the block is called with the argument given for the option, if any. See Option Handlers.
() → self
[T] () { (self) → T } → T
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 694
def new: () -> self
| [T] () { (self) -> T } -> T
Pushes a new List.
If a block is given, yields self and returns the result of the block, otherwise returns self.
(untyped obj, untyped prv, untyped msg) → untyped
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 1043
def notwice: (untyped obj, untyped prv, untyped msg) -> untyped
Checks if an argument is given twice, in which case an ArgumentError is raised. Called from OptionParser#switch only.
obj-
New argument.
prv: Previously specified argument.msg:Exceptionmessage.
(*String params) ?{ (*untyped) → untyped } → self
(String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc) ?{ (*untyped) → untyped } → self
(String short_params, String long_params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc) ?{ (*untyped) → untyped } → self
(*String params, Proc | Method handler) → self
(String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc, Proc | Method handler) → self
(String short_params, String long_params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc, Proc | Method handler) → self
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 709
def on: (*String params) ?{ (*untyped) -> untyped } -> self
| (String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc) ?{ (*untyped) -> untyped } -> self
| (String short_params, String long_params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc) ?{ (*untyped) -> untyped } -> self
| (*String params, Proc | Method handler) -> self
| (String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc, Proc | Method handler) -> self
| (String short_params, String long_params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc, Proc | Method handler) -> self
Creates an option from the given parameters params. See Parameters for New Options.
The block, if given, is the handler for the created option. When the option is encountered during command-line parsing, the block is called with the argument given for the option, if any. See Option Handlers.
(*String params) ?{ (*untyped) → untyped } → self
(String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc) ?{ (*untyped) → untyped } → self
(String short_params, String long_params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc) ?{ (*untyped) → untyped } → self
(*String params, Proc | Method handler) → self
(String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc, Proc | Method handler) → self
(String short_params, String long_params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc, Proc | Method handler) → self
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 730
def on_head: (*String params) ?{ (*untyped) -> untyped } -> self
| (String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc) ?{ (*untyped) -> untyped } -> self
| (String short_params, String long_params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc) ?{ (*untyped) -> untyped } -> self
| (*String params, Proc | Method handler) -> self
| (String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc, Proc | Method handler) -> self
| (String short_params, String long_params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc, Proc | Method handler) -> self
Creates an option from the given parameters params. See Parameters for New Options.
The block, if given, is the handler for the created option. When the option is encountered during command-line parsing, the block is called with the argument given for the option, if any. See Option Handlers.
The new option is added at the head of the summary.
(*String params) ?{ (*untyped) → untyped } → self
(String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc) ?{ (*untyped) → untyped } → self
(String short_params, String long_params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc) ?{ (*untyped) → untyped } → self
(*String params, Proc | Method handler) → self
(String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc, Proc | Method handler) → self
(String short_params, String long_params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc, Proc | Method handler) → self
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 751
def on_tail: (*String params) ?{ (*untyped) -> untyped } -> self
| (String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc) ?{ (*untyped) -> untyped } -> self
| (String short_params, String long_params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc) ?{ (*untyped) -> untyped } -> self
| (*String params, Proc | Method handler) -> self
| (String params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc, Proc | Method handler) -> self
| (String short_params, String long_params, Class | Array[String] | Hash[Symbol, untyped] | Regexp obj, ?String desc, Proc | Method handler) -> self
Creates an option from the given parameters params. See Parameters for New Options.
The block, if given, is the handler for the created option. When the option is encountered during command-line parsing, the block is called with the argument given for the option, if any. See Option Handlers.
The new option is added at the tail of the summary.
(*String argv, ?into: _Intoable) ?{ (String) → void } → Array[String]
(Array[String] argv, ?into: _Intoable) ?{ (String) → void } → Array[String]
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 769
def order: (*String argv, ?into: _Intoable) ?{ (String) -> void } -> Array[String]
| (Array[String] argv, ?into: _Intoable) ?{ (String) -> void } -> Array[String]
Parses command line arguments argv in order. When a block is given, each non-option argument is yielded. When optional into keyword argument is provided, the parsed option values are stored there via []= method (so it can be Hash, or OpenStruct, or other similar object).
Returns the rest of argv left unparsed.
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 779
def order!: (?Array[String] argv, ?into: _Intoable) ?{ (String) -> void } -> Array[String]
Same as order, but removes switches destructively. Non-option arguments remain in argv.
(*String argv, ?into: _Intoable) → Array[String]
(Array[String] argv, ?into: _Intoable) → Array[String]
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 791
def parse: (*String argv, ?into: _Intoable) -> Array[String]
| (Array[String] argv, ?into: _Intoable) -> Array[String]
Parses command line arguments argv in order when environment variable POSIXLY_CORRECT is set, and in permutation mode otherwise. When optional into keyword argument is provided, the parsed option values are stored there via []= method (so it can be Hash, or OpenStruct, or other similar object).
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 801
def parse!: (?Array[String] argv, ?into: _Intoable) -> Array[String]
Same as parse, but removes switches destructively. Non-option arguments remain in argv.
(?untyped argv, ?untyped setter) { (*untyped) → untyped } → untyped
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 1045
def parse_in_order: (?untyped argv, ?untyped setter) { (*untyped) -> untyped } -> untyped
(*String argv, ?into: _Intoable) → Array[String]
(Array[String] argv, ?into: _Intoable) → Array[String]
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 812
def permute: (*String argv, ?into: _Intoable) -> Array[String]
| (Array[String] argv, ?into: _Intoable) -> Array[String]
Parses command line arguments argv in permutation mode and returns list of non-option arguments. When optional into keyword argument is provided, the parsed option values are stored there via []= method (so it can be Hash, or OpenStruct, or other similar object).
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 822
def permute!: (?Array[String] argv, ?into: _Intoable) -> Array[String]
Same as permute, but removes switches destructively. Non-option arguments remain in argv.
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 847
def reject: (Class t) -> void
Directs to reject specified class argument.
type-
Argument class specifier, any object including
Class.
reject(type)
() → untyped
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 852
def release: () -> untyped
Release code
(untyped) → untyped
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 857
def release=: (untyped) -> untyped
Release code
() → List?
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 865
def remove: () -> List?
Removes the last List.
(untyped id, untyped key) → untyped
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 1053
def search: (untyped id, untyped key) -> untyped
Searches key in @stack for id hash and returns or yields the result.
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 879
def separator: (String string) -> void
Add separator in summary.
(?_LtLtString to, ?Integer width, ?Integer max, ?String indent) ?{ (String line) → void } → _LtLtString
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 921
def summarize: (?_LtLtString to, ?Integer width, ?Integer max, ?String indent) ?{ (String line) -> void } -> _LtLtString
Puts option summary into to and returns to. Yields each line if a block is given.
to-
Output destination, which must have method <<. Defaults to [].
width-
Width of left side, defaults to @summary_width.
max-
Maximum length allowed for left side, defaults to
width- 1. indent-
Indentation, defaults to @summary_indent.
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 940
def terminate: (?String arg) -> bot
Terminates option parsing. Optional parameter arg is a string pushed back to be the first non-option argument.
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 948
def to_a: () -> Array[String]
Returns option summary list.
() → List
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 963
def top: () -> List
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 971
def ver: () -> String?
Returns version string from program_name, version and release.
(untyped id, *untyped args) { (*untyped) → untyped } → untyped
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 1061
def visit: (untyped id, *untyped args) { (*untyped) -> untyped } -> untyped
Traverses @stack, sending each element method id with args and block.
(?_ToS mesg) → void
Source
# File vendor/bundle/ruby/4.0.0/gems/rbs-4.0.3/stdlib/optparse/0/optparse.rbs, line 990
def warn: (?_ToS mesg) -> void
Shows warning message with the program name
mesg-
Message, defaulted to +$!+.
See Kernel#warn.