Class: OptparseExample
- Inherits:
-
Object
- Object
- OptparseExample
- Defined in:
- lib/sm_transcript/optparseExample.rb
Constant Summary collapse
- CODES =
%w[iso-2022-jp shift_jis euc-jp utf8 binary]
- CODE_ALIASES =
{ "jis" => "iso-2022-jp", "sjis" => "shift_jis" }
Class Method Summary collapse
-
.parse(args) ⇒ Object
Return a structure describing the options.
Class Method Details
.parse(args) ⇒ Object
Return a structure describing the options.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 |
# File 'lib/sm_transcript/optparseExample.rb', line 17 def self.parse(args) # The options specified on the command line will be collected in *options*. # We set default values here. = OpenStruct.new .library = [] .inplace = false .encoding = "utf8" .transfer_type = :auto .verbose = false opts = OptionParser.new do |opts| opts. = "Usage: example.rb [options]" opts.separator "" opts.separator "Specific options:" # Mandatory argument. opts.on("-r", "--require LIBRARY", "Require the LIBRARY before executing your script") do |lib| .library << lib end # Optional argument; multi-line description. opts.on("-i", "--inplace [EXTENSION]", "Edit ARGV files in place", " (make backup if EXTENSION supplied)") do |ext| .inplace = true .extension = ext || '' .extension.sub!(/\A\.?(?=.)/, ".") # Ensure extension begins with dot. end # Cast 'delay' argument to a Float. opts.on("--delay N", Float, "Delay N seconds before executing") do |n| .delay = n end # Cast 'time' argument to a Time object. opts.on("-t", "--time [TIME]", Time, "Begin execution at given time") do |time| .time = time end # Cast to octal integer. opts.on("-F", "--irs [OCTAL]", OptionParser::OctalInteger, "Specify record separator (default \\0)") do |rs| .record_separator = rs end # List of arguments. opts.on("--list x,y,z", Array, "Example 'list' of arguments") do |list| .list = list end # 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(',') opts.on("--code CODE", CODES, CODE_ALIASES, "Select encoding", " (#{code_list})") do |encoding| .encoding = encoding end # Optional argument with keyword completion. opts.on("--type [TYPE]", [:text, :binary, :auto], "Select transfer type (text, binary, auto)") do |t| .transfer_type = t end # Boolean switch. opts.on("-v", "--[no-]verbose", "Run verbosely") do |v| .verbose = v end opts.separator "" opts.separator "Common options:" # No argument, shows at tail. This will print an options summary. # Try it and see! opts.on_tail("-h", "--help", "Show this message") do puts opts exit end # Another typical switch to print the version. opts.on_tail("--version", "Show version") do puts OptionParser::Version.join('.') exit end end opts.parse!(args) end |