From 8278ac5b28ac80438bc8e7be2be385d30ed727bd Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Tue, 27 May 2008 01:18:38 -0500 Subject: [PATCH] Various fixes --- extra/http/server/auth/login/edit-profile.xml | 2 +- extra/http/server/auth/login/register.xml | 2 +- extra/validators/validators-tests.factor | 15 +++++++++++ extra/validators/validators.factor | 25 ++++++++++++++++--- extra/webapps/user-admin/user-admin.factor | 1 - extra/webapps/wiki/wiki.factor | 4 +-- extra/xmode/code2html/code2html.factor | 2 +- 7 files changed, 41 insertions(+), 10 deletions(-) diff --git a/extra/http/server/auth/login/edit-profile.xml b/extra/http/server/auth/login/edit-profile.xml index 855dfa8469..6beaf5de6d 100644 --- a/extra/http/server/auth/login/edit-profile.xml +++ b/extra/http/server/auth/login/edit-profile.xml @@ -10,7 +10,7 @@ User name: - + diff --git a/extra/http/server/auth/login/register.xml b/extra/http/server/auth/login/register.xml index 4804410dde..9815f21945 100644 --- a/extra/http/server/auth/login/register.xml +++ b/extra/http/server/auth/login/register.xml @@ -63,7 +63,7 @@

- +

diff --git a/extra/validators/validators-tests.factor b/extra/validators/validators-tests.factor index a981f782d3..7d4325cbb6 100644 --- a/extra/validators/validators-tests.factor +++ b/extra/validators/validators-tests.factor @@ -47,6 +47,21 @@ namespaces assocs ; [ "http:/www.factorcode.org" v-url ] [ "invalid URL" = ] must-fail-with +[ 4561261212345467 ] [ "4561261212345467" v-credit-card ] unit-test + +[ 4561261212345467 ] [ "4561-2612-1234-5467" v-credit-card ] unit-test + +[ 0 ] [ "0000000000000000" v-credit-card ] unit-test + +[ "000000000" v-credit-card ] must-fail + +[ "0000000000000000000000000" v-credit-card ] must-fail + +[ "4561_2612_1234_5467" v-credit-card ] must-fail + +[ "4561-2621-1234-5467" v-credit-card ] must-fail + + [ 14 V{ } ] [ [ "14" "age" [ v-number 13 v-min-value 100 v-max-value ] validate diff --git a/extra/validators/validators.factor b/extra/validators/validators.factor index 2dcc2c04f9..aeb2dc2f80 100644 --- a/extra/validators/validators.factor +++ b/extra/validators/validators.factor @@ -1,9 +1,9 @@ ! Copyright (C) 2006, 2008 Slava Pestov ! See http://factorcode.org/license.txt for BSD license. -USING: kernel continuations sequences math namespaces sets -math.parser assocs regexp fry unicode.categories sequences -arrays hashtables words combinators mirrors classes quotations -xmode.catalog ; +USING: kernel continuations sequences sequences.lib math +namespaces sets math.parser math.ranges assocs regexp fry +unicode.categories arrays hashtables words combinators mirrors +classes quotations xmode.catalog ; IN: validators : v-default ( str def -- str ) @@ -91,6 +91,23 @@ IN: validators "not a valid syntax mode" throw ] unless ; +: luhn? ( n -- ? ) + string>digits + [ odd? [ 2 * 10 /mod + ] when ] map-index + sum 10 mod 0 = ; + +: v-credit-card ( str -- n ) + "- " diff + dup CHAR: 0 CHAR: 9 [a,b] diff empty? [ + 13 v-min-length + 16 v-max-length + dup luhn? [ string>number ] [ + "card number check failed" throw + ] if + ] [ + "invalid credit card number format" throw + ] if ; + SYMBOL: validation-messages SYMBOL: named-validation-messages diff --git a/extra/webapps/user-admin/user-admin.factor b/extra/webapps/user-admin/user-admin.factor index 728d5215f0..cdaf3f5ea9 100644 --- a/extra/webapps/user-admin/user-admin.factor +++ b/extra/webapps/user-admin/user-admin.factor @@ -12,7 +12,6 @@ http.server.auth.login http.server.auth http.server.sessions http.server.actions -http.server.crud http.server ; IN: webapps.user-admin diff --git a/extra/webapps/wiki/wiki.factor b/extra/webapps/wiki/wiki.factor index 2f281866c5..d0e1aed7ce 100644 --- a/extra/webapps/wiki/wiki.factor +++ b/extra/webapps/wiki/wiki.factor @@ -166,10 +166,10 @@ TUPLE: wiki < dispatcher ; "" add-responder "view" add-responder "revision" add-responder - { } "edit" add-responder "revisions" add-responder - "delete" add-responder "diff" add-responder "articles" add-responder + { } "edit" add-responder + { } "delete" add-responder "wiki-common" wiki-template >>template ; diff --git a/extra/xmode/code2html/code2html.factor b/extra/xmode/code2html/code2html.factor index a9384ad861..6eccddc94a 100755 --- a/extra/xmode/code2html/code2html.factor +++ b/extra/xmode/code2html/code2html.factor @@ -1,4 +1,4 @@ -USING: xmode.tokens xmode.marker xmode.catalog kernel html +USING: xmode.tokens xmode.marker xmode.catalog kernel html.elements io io.files sequences words io.encodings.utf8 namespaces xml.entities ; IN: xmode.code2html