StringValidator

StringValidator は文字列の正当性を評価するライブラリです。

次のように使用します。

StringValidator.validate 規則, 文字列

規則は色んな形式で記述できます。たとえば、str が整数値であることを期待する場合は、

StringValidator.validate Integer, str

と記述できます。

Integer 規則を使用した場合は、StringValidator.validate は戻り値として Integer オブジェクトを返します。

StringValidator.validate Integer, "123"  # => 123
StringValidator.validate Integer, "-45"  # => -45

規則に一致しない場合は、例外が発生します。

 StringValidator.validate Integer, "abc"  # raise StringValidator::Error::NotInteger

規則は色々あります。

規則 条件 戻り値
Integer 整数であれば正当 Integer オブジェクト
Float 数値であれば正当 Float オブジェクト
Range オブジェクト 範囲内であれば正当 first, last が Integer であれば Integer, そうでなくて Numeric であれば Float, そうでなければ評価文字列
Regexp オブジェクト 一致すれば正当 評価文字列
Proc オブジェクト Procを実行した結果が真であれば正当 Proc の実行結果
Array オブジェクト 正当な要素が一つでもあれば正当 最初の正当な要素の評価結果
Hash オブジェクト 後述 後述
Class オブジェクト new で例外が発生しなければ正当 new の戻り値
その他 to_s して一致してれば正当 評価文字列

Hash はキーと値の組によって規則を指定します。

キー 条件
:rule 規則 再評価
:any 配列 正当な要素が一つでもあれば正当
:all 配列 すべての要素が正当であれば正当
:length 規則 評価文字列のバイト数を新たな評価文字列として再評価
:maxlength 数値 評価文字列のバイト数が値以下であれば正当
:minlength 数値 評価文字列のバイト数が値以上であれば正当
:charlength 規則 評価文字列の文字数を新たな評価文字列として再評価
:maxcharlength 数値 評価文字列の文字数が値以下であれば正当
:mincharlength 数値 評価文字列の文字数が値以上であれば正当

Hash 規則の戻り値は、:rule の評価結果を返します。:rule がなければ :any の評価結果を、:any もなければ :all の評価結果を、:all もなければ評価文字列を返します。

charlength の文字数は $KCODE に依存します。

いくつか例を示します。

# TCP/IPポート番号
StringValidator.validate 1..65535, str  # => <#Integer>
# "true" または "false"
StringValidator.validate ["true","false"], str  # => "true" or "false"
# 3〜6桁の数値
StringValidator.validate({:rule=>Integer, :length=>3..6}, str) # => <#Integer>