make-request-matcher-group added by retroj on Tue Jun 25 18:52:32 2013
(define (make-request-matcher-group matchers) (lambda (sym) (lambda (path) (let* ((idx (or (list-index (lambda (x) (eq? sym (car x))) matchers) (error (sprintf "Symbol ~A not in matcher group" sym)))) (dont-match (take matchers idx)) (do-match (list-ref matchers idx))) (and (every (lambda (m) (not (string-match (cdr m) path))) dont-match) (string-match (cdr do-match) path) (list path)))))) (define request-matcher (make-request-matcher-group `((scss . ,(regexp "/style/.*\\.css")) (style-misc . ,(regexp "/style/.*")) (images . ,(regexp ".*\\.(jpg|png)")) (everything-else . ,(regexp ".*"))))) (define-page (request-matcher 'scss) ...) (define-page (request-matcher 'images) ...) (define-page (request-matcher 'everything-else) ...)