RArgは、Hashを名前付き引数(キーワード引数)のように扱い、引数の正当性を検証するためのシンプルなライブラリです。 命名はROptにあやかりました。
以下の3つの機能を備えています。
require_arg
default_arg
alias_arg
同梱のsetup.rb
を実行してください。(適切な位置にlib/rarg.rb
がコピーされます)
% ruby setup.rb
もしくは、RubyGemsがインストールされている環境であれば、gem
コマンドでRArgのダウンロード&インストールを行うことも可能です。
% gem install rarg
require 'rarg'
class Foo
attr_reader :r1, :r2, :d1
def initialize(options = {})
re = RArg.parse(options) do
require_arg :r1, :r2
default_arg :d1, 0
alias_arg :a1, :r1
end
@r1, @r2, @d1 = re[:r1], re[:r2], re[:d1]
end
end
Foo.new({}) # Exception: argument of 'r1' is required, but missing (RArg::Error)
Foo.new({:r1 => nil}) # Exception: argument of 'r2' is required, but missing (RArg::Error)
Foo.new({:r1 => nil, :r2 => 10, :nd => 20}) # Exception: 'nd' is not defined (RArg::Error)
Foo.new({:r1 => nil, :r2 => 10}) # No Exception
foo = Foo.new({:r1 => 'R1', :r2 => 'R2'})
p foo.r2 #=> 'R2'
p foo.d1 #=> 0 (default)
foo = Foo.new({:a1 => 'R1', :r2 => nil, :d1 => 'D1'})
p foo.d1 #=> 'D1' (overwritten)
p foo.r1 #=> 'R1' (alias definition: r1 => a1)
バグの報告、質問などがありましたら、こちらのフォームからお気軽にどうぞ。