ovidiu 01/12/14 12:37:32 Modified: scratchpad/schecoon/scheme sitemap.scm Log: Use lambda functions in all the places instead of implicitly assuming them. Revision Changes Path 1.2 +16 -12 xml-cocoon2/scratchpad/schecoon/scheme/sitemap.scm Index: sitemap.scm =================================================================== RCS file: /home/cvs/xml-cocoon2/scratchpad/schecoon/scheme/sitemap.scm,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- sitemap.scm 2001/12/13 09:25:42 1.1 +++ sitemap.scm 2001/12/14 20:37:32 1.2 @@ -22,7 +22,10 @@ ;; ;; Pipelines are simply functions that accept arguments. These ;; arguments are usually passed from the sitemap, where they are -;; computed usually from the HTTP request. +;; computed usually from the HTTP request. These functions should +;; accept a variable number of arguments. This is because the actual +;; values for the parameters are generated as result of the pattern +;; matching. ;; ;; Below is an example of how pipelines definition look in ;; Scheme. Another Scheme module is responsible to mapping the @@ -32,7 +35,7 @@ ;;(define pipelines ;; (define-pipelines ;; (define-pipeline docbook-xhtml -;; (lambda (file) +;; (lambda (file . args) ;; (generate file) ;; (transform '((type xslt) ;; (name "docbook2xhtml.xsl") @@ -40,7 +43,7 @@ ;; (serialize (type xml)))) ;; ;; (define-pipeline gif-image -;; (lambda (file) +;; (lambda (file . args) ;; (read (concat "src/" file ".gif") "image/gif"))) ;; )) ;; @@ -67,7 +70,7 @@ (define-syntax define-pipeline (lambda (x) (syntax-case x () - ((_) '()) + ((_) (syntax #f)) ((_ name body) (syntax (cons (quote name) body)))))) @@ -79,15 +82,16 @@ ;;(define the-sitemap ;; (define-sitemap ;; (match "sql/.*" -;; (call-pipeline docbook-xhtml "\\1")) +;; (call-pipeline docbook-xhtml)) ;; ;; (match "slides/.*\.gif" -;; (call-pipeline gif-image "\\1")) +;; (call-pipeline gif-image)) ;; -;; (match "view-source/*" -;; (generate "\\1")) -;; (transform '((type xslt) (name "xsp")))) -;; (serialize (type xml)))) +;; (match "view-source/(*).(*)" +;; (lambda (file type . args) +;; (generate "\\1")) +;; (transform '((type xslt) (name "xsp")))) +;; (serialize (type xml))))) ;; ;; (match "shopping-cart" ;; (shopping-cart)) @@ -104,12 +108,12 @@ (define-syntax match (lambda (x) (syntax-case x () - ((_ pattern expression ...) + ((_ pattern expression) (syntax (let ((regexp (pregexp pattern))) (lambda (url) (let ((result (pregexp-match regexp url))) (if result - (begin expression ...) + (apply expression (cdr result)) #f)))))) )))
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]