| Path: | lib/optconfig.rb |
| Last Update: | Tue Feb 05 23:40:08 +0900 2008 |
$Id: optconfig.rb 7 2008-02-05 14:40:08Z tommy $ Copyright (C) 2004-2008 TOMITA Masahiro tommy@tmtm.org
| Author: | TOMITA Masahiro <tommy@tmtm.org> |
| License: | Ruby‘s. see www.ruby-lang.org/en/LICENSE.txt |
$ make # make install
require "optconfig" opt = OptConfig.new opt.option "p", "port=num", :format=>1..65535, :default=>110, :description=>"port number (%s)" opt.option "h", "hostname=name", :format=>true, :default=>"localhost", :description=>"hostname (%s)" opt.option "hogehoge", :description=>"enable hogehoge flag" argv = %w[-p 12345 -h 192.168.1.1 arg1 arg2] opt.parse argv # => ["arg1", "arg2"] opt["p"] # => 12345 opt["port"] # => 12345 (same as opt["p"]) opt["h"] # => "192.168.1.1" opt["hogehoge"] # => nil (means not set) opt["x"] # raise OptConfig::UnknownOption argv # => ["-p", "12345", "-h", "192.168.1.1", "arg1", "arg2"] opt.parse! argv # => ["arg1", "arg2"] argv # => ["arg1", "arg2"]
opt.usage は次の文字列を生成します。
-p, --port=num port number (12345) -h, --hostname=name hostname (192.168.1.1) --hogehoge enable hogehoge flag
OptConfig#option でオプションを定義します。 引数は、オプション名のリストと、オプションの属性を表す Hash です。
オプション属性(Hash)のキーは以下の通りです。
| nil : | format が真の場合は引数必須、偽の場合は引数不要 (デフォルト)。 |
| true : | 引数必須。 |
| false : | 引数不要。 |
| :optional : | 引数を省略可能。省略時は OptConfig#[] は true になる。 |
| true : | 任意。 |
| false/nil : | オプションが引数を必要としない (デフォルト)。 |
| :boolean : | オプション引数が "1", "true", "enable", "yes", "y", "on" で true、"0", "false", "disable", "no", "n", "off" で false を返す。 |
| その他 : | StringValidator の rule オブジェクトとみなして引数の形式をチェックする。 |
| true : | 複数指定可能。OptConfig#[] は配列を返す。 |
| false/nil : | 複数指定された場合はエラー。 |
| :last : | 最後に指定されたものが有効(デフォルト)。 |
parse よりも前に file= でファイル名を指定するか、OptConfig.new 時に :file 属性を指定すると、そのファイルからオプションを読み込みます。ファ イルで指定されたオプションよりも、parse の引数で指定されたオプション の方が優先度が高いです。
オプションファイルの形式は次の通りです:
option-name = value
option-name には1文字のオプション名は指定できません。
「=」の前後の空白はあってもなくても構いません。「=」は省略可能です。 その場合は、オプション名と値との間に一つ以上の空白が必要です。
「#」で始まる行はコメントとみなされます。空行も無視されます。 指定できるオプションは長い形式のオプションだけです。
ファイル中に「[section_name]」という行を置くと、その行以降がセクショ ンとして扱われます。OptConfig#section= でセクション名を指定すると、指 定したセクションのオプションのみが読み込まれます。OptConfig#section= に配列を設定すると、複数のセクションから読み込みます。 OptConfig#section を設定しない場合は、すべてのセクションからオプショ ンを読み込みます。