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>