Changeset 31378 in project


Ignore:
Timestamp:
09/11/14 15:24:18 (5 years ago)
Author:
Moritz Heidkamp
Message:

hyde: Also export read-page, serve-page, and page-by-path. Replace before-page-serve with page-serve-handler which defaults to serve-page.

Location:
release/4/hyde/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • release/4/hyde/trunk/hyde-atom.scm

    r28041 r31378  
    55
    66(define $ (environment-ref (page-eval-env) '$))
    7 (define page-path (environment-ref (page-eval-env) 'page-path))
    8 (define read-page (environment-ref (page-eval-env) 'read-page))
    97
    108(define (maybe-authors->atom-authors authors)
  • release/4/hyde/trunk/hyde.scm

    r31336 r31378  
    2727 ignore-page?
    2828 around-page-translate
    29  before-page-serve
    30 
     29 page-serve-handler
     30 
     31 page-by-path
     32 read-page
     33 serve-page
    3134 page?
    3235 page-source-path
     
    263266                                            (pathname-extension (page-path page)))))))
    264267
     268(define (serve-page page path continue)
     269  (case (and page (page-type page))
     270    ((dynamic) (send-page page))
     271    ((directory)
     272     (call/cc (lambda (break)
     273                (for-each (lambda (index-file)
     274                            (let* ((index-path (append path (list index-file)))
     275                                   (index-page (page-by-path index-path)))
     276
     277                              (when index-page
     278                                (send-page index-page)
     279                                (break index-page))))
     280                          (index-files))
     281
     282                (continue))))
     283    (else (continue))))
     284
     285(define page-serve-handler
     286  (make-parameter serve-page))
     287
    265288(define (serve)
    266289  (root-path (source-dir))
     
    268291                ,(lambda (continue)
    269292                   (with-pages
    270                     (lambda ()
    271                       (let* ((path (cdr (uri-path (request-uri (current-request)))))
    272                              (page (page-by-path path)))
    273                         (when page
    274                           ((before-page-serve) page))
    275                         (case (and page (page-type page))
    276                           ((dynamic) (send-page page))
    277                           ((directory)
    278                            (call/cc (lambda (break)
    279                                       (for-each (lambda (index-file)
    280                                                   (let* ((index-path (append path (list index-file)))
    281                                                          (index-page (page-by-path index-path)))
    282 
    283                                                     (when index-page
    284                                                       (send-page index-page)
    285                                                       (break index-page))))
    286                                                 (index-files))
    287 
    288                                       (continue))))
    289 
    290                           (else (continue))))))))))
    291 
     293                    (lambda ()
     294                      (let ((path (cdr (uri-path (request-uri (current-request))))))
     295                        ((page-serve-handler) (page-by-path path) path continue))))))))
    292296  (print (format "spiffy serving hyde on port ~A" (server-port)))
    293297  (start-server))
Note: See TracChangeset for help on using the changeset viewer.