1 ! Copyright (C) 2006 Slava Pestov
2 ! See http://factorcode.org/license.txt for BSD license.
4 USING: generic kernel errors words sequences math
7 TUPLE: validation-error reason ;
9 : apply-validators ( string quot -- obj error/f )
13 dup validation-error? [ >r 2drop f r> ] [ rethrow ] if
16 : validation-error ( msg -- * ) <validation-error> throw ;
18 : v-default ( obj value -- obj )
19 over empty? [ nip ] [ drop ] if ;
21 : v-required ( str -- str )
22 dup empty? [ "required" validation-error ] when ;
24 : v-min-length ( str n -- str )
26 [ "must be at least " % # " characters" % ] "" make
32 : v-max-length ( str n -- str )
34 [ "must be no more than " % # " characters" % ] "" make
40 : v-number ( str -- n )
42 "must be a number" validation-error