awful router added by mario-goulart on Tue Jun 25 20:05:05 2013
(use awful) (enable-sxml #t) (define (handle-root) "this is root") (define (handle-foo) "this is foo") (define (handle-bar path) (string-append "this is " path)) (define (match-baz path) (let ((path-parts (string-split path "/"))) (and (= (length path-parts) 3) (cdr path-parts)))) (define (handle-baz part1 part2) (sprintf "this is baz: ~a and ~a" part1 part2)) (define (handle-get-form) `(form (@ (action "/some-form") (method "post")) (input (@ (type "text") (name "some-text"))) (input (@ (type "submit"))))) (define (handle-post-form) (with-request-variables (some-text) `("You submitted " (i ,some-text)))) (define (dispatcher routes) (for-each (lambda (route) (let ((matcher (car route)) (handlers (cdr route))) (for-each (lambda (handler) (let ((method (car handler)) (handler (cadr handler))) (define-page matcher (case-lambda (() (handler)) ((path) (handler path)) (args (apply handler args))) method: (list method 'HEAD)))) handlers))) routes)) (define routes `(("/" (get ,handle-root)) ("/foo" (get ,handle-foo)) (,(irregex "/bar/.*") (get ,handle-bar)) (,match-baz (get ,handle-baz)) ("/some-form" (get ,handle-get-form) (post ,handle-post-form)) )) (dispatcher routes)