Changeset 15373 in project


Ignore:
Timestamp:
08/09/09 13:36:40 (10 years ago)
Author:
Ivan Raikov
Message:

some more modifications to content rendering in qwiki

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

Legend:

Unmodified
Added
Removed
  • release/4/qwiki/trunk/qwiki-sxml.scm

    r15372 r15373  
    7878(define qwiki-html-transformation-rules
    7979
    80   `((wiki-page
     80  `(
     81
     82    ,@universal-conversion-rules
     83
     84    (wiki-page
    8185     . ,(lambda (tag . elems)
    8286          (list
     
    8589           elems
    8690           "</html>" nl)))
    87                        
     91
    8892    (Header
    8993     *macro*
     
    120124                  "</ul></div>" nl))))
    121125|#
     126    (TOC . ,(lambda (tag rest) (list)))
     127
     128    (nowiki
     129      ((*text*       ; local override for nowiki text
     130        . ,(lambda (tag . str) str)))
     131     . ,(lambda (tag . lines)
     132          `(,@(map (lambda (line) (list "     " line nl)) lines)
     133            )))
    122134
    123135    (special
     
    126138          `(,(string->symbol (string-upcase (symbol->string name))) ,arg)))
    127139         
    128 
    129     (nowiki
    130      *macro*
    131      . ,(lambda (tag . lines)
    132           `(pre ,@(map (lambda (line) (list "     " line nl))
    133                        lines))))
    134140    (type
    135141     *macro*
  • release/4/qwiki/trunk/qwiki.scm

    r15372 r15373  
    3535
    3636(module qwiki
    37   (qwiki-docroot qwiki-source-path qwiki-base-uri qwiki-transformation-steps
    38    qwiki-handler qwiki-show qwiki-edit qwiki-history)
     37  (qwiki-docroot
     38   qwiki-source-path
     39   qwiki-base-uri
     40   qwiki-handler
     41   qwiki-show
     42   qwiki-edit
     43   qwiki-history
     44   qwiki-render-file
     45   qwiki-transformation-steps
     46   )
    3947
    4048(import chicken scheme)
     
    5462(define qwiki-base-uri (make-parameter "/" uri-reference))
    5563
    56 ;; The rules used for transforming page SXML structure into HTML
    57 (define qwiki-transformation-steps
    58   (make-parameter
    59    (list qwiki-html-transformation-rules
    60          shortcut-rules
    61          (append doctype-rules universal-conversion-rules))))
     64;; The rules used for rendering wiki pages (default is HTML)
     65(define qwiki-output-driver
     66  (make-parameter qwiki-html-transformation-rules))
     67
     68(define qwiki-extensions
     69  (make-parameter (list)))
     70
     71;; The rules used for transforming page SXML structure
     72(define (qwiki-transformation-steps)
     73  (list (append (qwiki-extensions)
     74                (qwiki-output-driver)
     75                )))
    6276
    6377;; Return the trailing part of the path relative to the docroot/base-uri
     
    94108  (close-output-port (response-port (current-response))))
    95109
     110
     111
    96112;;; Actions
    97113(define (qwiki-history path req)
     
    100116               (alist-ref 'rev (uri-query (request-uri req)) eq? "")))
    101117         (history (get-history source-file rev #f)) ; no pagination yet
    102          (content `(wiki-page (history ,history))))
     118         (content `(wiki-page (Header) (body (history ,history)))))
    103119    (send-content content)))
    104120
     
    116132         ;; it can be extended by plugins.  The names of the buttons are
    117133         ;; pretty much tied to the code though
    118          (content `(wiki-page
    119                     ,(if (alist-ref 'preview postdata)
    120                          `(div (@ (class "preview"))
    121                                (h2 "Preview")
    122                                ,(wiki-parse source))
    123                          "")
    124                     (form (@ (method "post"))
    125                           (textarea (@ (name "source"))
    126                                     ,source)
    127                           (input (@ (type "submit")
    128                                     (name "save")
    129                                     (value "Save")))
    130                           (input (@ (type "submit")
    131                                     (name "preview")
    132                                     (value "Preview")))))))
     134         (content `(wiki-page
     135                    (Header)
     136                    (body
     137                     ,(if (alist-ref 'preview postdata)
     138                          `(div (@ (class "preview"))
     139                                (h2 "Preview")
     140                                ,(wiki-parse source))
     141                          "")
     142                     (form (@ (method "post"))
     143                           (textarea (@ (name "source"))
     144                                     ,source)
     145                           (input (@ (type "submit")
     146                                     (name "save")
     147                                     (value "Save")))
     148                           (input (@ (type "submit")
     149                                     (name "preview")
     150                                     (value "Preview"))))))))
    133151    (if (alist-ref 'save postdata)
    134152        (begin
     
    161179        (if rev
    162180            (send-content ; Do not store if old rev
    163              `(wiki-page ,(call-with-input-revision
    164                            source-file rev wiki-parse)))
     181             `(wiki-page (Header)
     182                         (body
     183                          ,(call-with-input-revision
     184                            source-file rev wiki-parse))))
    165185            (begin
    166186             (update-html-file! (make-pathname (root-path) html-file)
     
    179199    (with-output-to-path html-file
    180200      (lambda ()
    181         (let ((content `(wiki-page
    182                          ,(call-with-input-file source-file wiki-parse))))
     201        (let ((content `(wiki-page
     202                         (Header)
     203                         (body
     204                          ,(call-with-input-file source-file wiki-parse)))))
    183205          (output-xml content (qwiki-transformation-steps)))))))
    184206
     
    218240          (handler (relative-uri-path uri) (current-request))))))
    219241
     242(define (qwiki-render-file file)
     243  (call-with-input-file file
     244    (lambda (input)
     245      (let ((content `(wiki-page (Header) (body ,(wiki-parse input)))))
     246        (output-xml content (qwiki-transformation-steps))))))
     247
    220248)
Note: See TracChangeset for help on using the changeset viewer.