diff --git a/basis/validators/validators-docs.factor b/basis/validators/validators-docs.factor index 4f03fa915b..67c9f4fceb 100644 --- a/basis/validators/validators-docs.factor +++ b/basis/validators/validators-docs.factor @@ -2,6 +2,10 @@ USING: help.markup help.syntax io.streams.string quotations strings math regexp regexp.backend ; IN: validators +HELP: v-checkbox +{ $values { "str" string } } +{ $description "Converts the string value of a checkbox component (either \"on\" or \"off\") to a boolean value." } ; + HELP: v-captcha { $values { "str" string } } { $description "Throws a validation error if the string is non-empty. This is used to create bait fields for spam-bots to fill in." } ; @@ -99,6 +103,7 @@ $nl { $subsection v-one-line } { $subsection v-one-word } { $subsection v-captcha } +{ $subsection v-checkbox } "More complex validators:" { $subsection v-email } { $subsection v-url } diff --git a/basis/validators/validators-tests.factor b/basis/validators/validators-tests.factor index d4f3487d0b..acdcdda5d2 100644 --- a/basis/validators/validators-tests.factor +++ b/basis/validators/validators-tests.factor @@ -10,6 +10,9 @@ namespaces assocs ; [ "hello" ] [ "hello" v-one-word ] unit-test [ "hello world" v-one-word ] must-fail +[ t ] [ "on" v-checkbox ] unit-test +[ f ] [ "off" v-checkbox ] unit-test + [ "foo" v-number ] must-fail [ 123 ] [ "123" v-number ] unit-test [ 123 ] [ "123" v-integer ] unit-test diff --git a/basis/validators/validators.factor b/basis/validators/validators.factor index a70e20d7b6..04c85cd6db 100644 --- a/basis/validators/validators.factor +++ b/basis/validators/validators.factor @@ -5,6 +5,9 @@ math.parser math.ranges assocs regexp unicode.categories arrays hashtables words classes quotations xmode.catalog ; IN: validators +: v-checkbox ( str -- ? ) + "on" = ; + : v-default ( str def -- str/def ) over empty? spin ? ;