Allowing more characters in Planet 2 tags

This commit is contained in:
Jay McCarthy 2012-11-24 08:29:47 -07:00
parent cf7e54bb9f
commit d614500f59

View File

@ -1,4 +1,6 @@
#lang racket/base #lang racket/base
(module+ test
(require rackunit))
(require web-server/http (require web-server/http
web-server/servlet-env web-server/servlet-env
racket/file racket/file
@ -408,7 +410,7 @@
(error 'planet2 "Source must not be empty: ~e" new-source)) (error 'planet2 "Source must not be empty: ~e" new-source))
(define new-desc (request-binding/string pkg-req "description")) (define new-desc (request-binding/string pkg-req "description"))
(when (regexp-match #rx"[^a-zA-Z0-9_\\-]" new-pkg) (unless (valid-name? new-pkg)
(error 'planet2 (error 'planet2
"Illegal character in name; only alphanumerics, plus '-' and '_' allowed: ~e" "Illegal character in name; only alphanumerics, plus '-' and '_' allowed: ~e"
new-pkg)) new-pkg))
@ -499,13 +501,24 @@
(add-tag! pkg-name new-tag) (add-tag! pkg-name new-tag)
(redirect-to (main-url page/info pkg-name))) (redirect-to (main-url page/info pkg-name)))
(define (valid-name? t)
(not (regexp-match #rx"[^a-zA-Z0-9_\\-]" t)))
(module+ test
(check-equal? (valid-name? "net") #t)
(check-equal? (valid-name? "120") #t)
(check-equal? (valid-name? "Web") #t)
(check-equal? (valid-name? "foo-bar") #t)
(check-equal? (valid-name? "!meh") #f)
(check-equal? (valid-name? "foo_bar") #t))
(define (add-tag! pkg-name new-tag) (define (add-tag! pkg-name new-tag)
(when (and new-tag (when (and new-tag
(not (string=? new-tag ""))) (not (string=? new-tag "")))
(define i (package-info pkg-name)) (define i (package-info pkg-name))
(when (regexp-match #rx"[^a-zA-Z0-9]" new-tag) (unless (valid-name? new-tag)
(error 'planet2 (error 'planet2
"Illegal character in tag; only alphanumerics allowed: ~e" "Illegal character in tag; only alphanumerics allowed, plus '_' and '-': ~e"
new-tag)) new-tag))
(package-info-set! (package-info-set!
pkg-name pkg-name