Changeset 15426 in project


Ignore:
Timestamp:
08/13/09 14:14:24 (10 years ago)
Author:
sjamaan
Message:

Rearrange rules so that TYPE works only on elements and not on attribs

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

Legend:

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

    r15375 r15426  
    3838        (nowiki-install!)
    3939
    40         (import chicken scheme)
    41         (use data-structures qwiki qwiki-sxml)
     40(import chicken scheme)
     41(use data-structures qwiki qwiki-sxml  sxml-transforms)
    4242
    4343(define nl (list->string (list #\newline)))
    4444
    4545(define nowiki-rules
    46     `((nowiki
    47        ((*text*       ; local override for nowiki text
    48          . ,(lambda (tag . str) str)))
    49        . ,(lambda (tag . lines)
    50             `(,@(map (lambda (line) (list "     " line nl)) lines)
    51               )))))
     46  `((nowiki
     47     ((*text*                         ; local override for nowiki text
     48       . ,(lambda (tag . str) str)))
     49     . ,(lambda (tag . lines)
     50          `(,@(map (lambda (line) (list "     " line nl)) lines)
     51            )))
     52    ,@alist-conv-rules))
    5253
    5354(define (nowiki-install!)
    54   (qwiki-extensions (append nowiki-rules (qwiki-extensions)))
    55   )
     55  (qwiki-extensions (cons nowiki-rules (qwiki-extensions)))
     56 )
    5657
    5758)
  • release/4/qwiki/trunk/qwiki-sxml.scm

    r15383 r15426  
    4646
    4747
    48 (define nl (list->string (list #\newline)))
    49 
    5048(define lookup-def
    5149  (lambda (k lst . rest)
     
    5654(define (qwiki-make-html-header head-parms)
    5755  `(head
    58     ,nl (title ,(or (lookup-def 'title head-parms) "qwiki"))
    59     ,nl (meta (@ (http-equiv "Content-Type") (content "text/html; charset=UTF-8")))
    60     ,nl (meta (@ (http-equiv "Content-Style-Type") (content "text/css")))
    61     ,nl ,(let ((style  (lookup-def 'style head-parms))
    62                (print-style  (lookup-def 'print-style head-parms)))
    63            (list (if style `(link (@ (rel "stylesheet") (type "text/css") (href ,style))) '())
    64                  (if print-style `(link (@ (rel "stylesheet") (type "text/css")
    65                                            (media "print")  (href ,print-style))) '())))
    66     ,nl
    67     ,(zip
    68       (map
    69        (lambda (key)
    70          (let ((val (lookup-def key head-parms )))
    71            (and val
    72                 `(meta (@ (name ,(symbol->string key)) (content ,val))))))
    73        '(description Author keywords
    74                      Date-Revision-yyyymmdd Date-Creation-yyyymmdd))
    75       (circular-list nl))
    76     ,nl))
     56    (title ,(or (lookup-def 'title head-parms) "qwiki"))
     57    (meta (@ (http-equiv "Content-Type") (content "text/html; charset=UTF-8")))
     58    (meta (@ (http-equiv "Content-Style-Type") (content "text/css")))
     59    ,(let ((style  (lookup-def 'style head-parms))
     60           (print-style  (lookup-def 'print-style head-parms)))
     61       (list (if style `(link (@ (rel "stylesheet") (type "text/css") (href ,style))) '())
     62             (if print-style `(link (@ (rel "stylesheet") (type "text/css")
     63                                       (media "print")  (href ,print-style))) '())))
     64    ,(map
     65      (lambda (key)
     66        (let ((val (lookup-def key head-parms )))
     67          (and val
     68               `(meta (@ (name ,(symbol->string key)) (content ,val))))))
     69      '(description Author keywords
     70                    Date-Revision-yyyymmdd Date-Creation-yyyymmdd))))
    7771
    7872(define (qwiki-html-transformation-rules content)
     73  `((
     74     (@ *preorder* . ,(lambda element element))
     75     
     76     (Header
     77      *macro*
     78      . ,(lambda (tag . headers)
     79           (qwiki-make-html-header headers)))
    7980
    80   `(
     81     (Section
     82      *macro*
     83      . ,(lambda (tag level head-word . elems)
     84           `((n_) (a (@ (name ,head-word)) (n_))
     85             (,(string->symbol (string-append "h" (number->string level)))
     86              ,head-word ,elems)
     87             )))
    8188
    82     ,@universal-conversion-rules
     89     (special
     90      *macro*
     91      . ,(lambda (tag name arg)
     92           `(,(string->symbol (string-upcase (symbol->string name))) ,arg)))
     93         
     94     (type
     95      *macro*
     96      . ,(lambda (tag . terms)
     97           `(tt ,@terms)))
    8398
    84     (wiki-page
    85      . ,(lambda (tag . elems)
    86           (list
    87            xhtml-1.0-strict
    88            "<html>" nl
    89            elems
    90            "</html>" nl)))
    91 
    92     (Header
    93      *macro*
    94      . ,(lambda (tag . headers)
    95           (qwiki-make-html-header headers)))
    96 
    97     (Section
    98      *macro*
    99      . ,(lambda (tag level head-word . elems)
    100           `((n_) (a (@ (name ,head-word)) (n_))
    101             (,(string->symbol (string-append "h" (number->string level)))
    102              ,head-word ,elems) ,nl
    103             )))
    104 
    105     (TOC        ;; Re-scan the content for "Section" tags and generate
    106      . ,(lambda (tag . rest)    ;; the table of contents
    107           (let ((sections
    108                  (pre-post-order content
    109                                  `(
    110                                    (Section     ;; (Section level "content ...")
    111                                     ((*text* . ,(lambda (tag str) str)))
    112                                     . ,(lambda (tag level head-word . elems)
    113                                          (list "<li><a href=\"#" head-word
    114                                                "\">" head-word elems "</a>" nl ))
    115                                     )
    116                                    (*default*
    117                                     . ,(lambda (tag . elems) elems))
    118                                    
    119                                    (*text* . ,(lambda (trigger str) (list)))))))
    120             (list "<div id=\"toc\">"
    121                   "<ul>"
    122                   sections
    123                   "</ul></div>" nl))))
    124 
    125     (special
    126      *macro*
    127      . ,(lambda (tag name arg)
    128           `(,(string->symbol (string-upcase (symbol->string name))) ,arg)))
    129          
    130     (type
    131      *macro*
    132      . ,(lambda (tag . terms)
    133           `(tt ,@terms)))
    134 
    135     (url *macro* . ,(lambda (tag href . contents)
    136                       `(a (@ (href ,href))
    137                           ,(if (pair? contents) contents
    138                                href))))
     99     (url *macro* . ,(lambda (tag href . contents)
     100                       `(a (@ (href ,href))
     101                           ,(if (pair? contents) contents
     102                                href))))
    139103
    140104   
    141     ;; Maybe this should be done in multiple steps to make it more "hookable"
    142     (history
    143      *macro* . ,(lambda (history items)
    144                   `(table
    145                     (tr (th "revision")
    146                         (th "author")
    147                         (th "date")
    148                         (th "description"))
    149                     ,@(map (lambda (item)
    150                              `(tr (td (url ,(string-append
    151                                              "?action=show&rev="
    152                                              (number->string (car item)))
    153                                            ,(car item)))
    154                                   (td ,(cadr item))
    155                                   (td ,(time->string (caddr item)))
    156                                   (td ,(cadddr item))))
    157                            items))))
    158     (page-specific-links
    159      *macro* . ,(lambda _
    160                   `(ul (@ (class "page-specific-links"))
    161                        (li (url "?action=show" "show"))
    162                        (li (url "?action=edit" "edit"))
    163                        (li (url "?action=history" "history")))))
     105     ;; Maybe this should be done in multiple steps to make it more "hookable"
     106     (history
     107      *macro* . ,(lambda (history items)
     108                   `(table
     109                     (tr (th "revision")
     110                         (th "author")
     111                         (th "date")
     112                         (th "description"))
     113                     ,@(map (lambda (item)
     114                              `(tr (td (url ,(string-append
     115                                              "?action=show&rev="
     116                                              (number->string (car item)))
     117                                            ,(car item)))
     118                                   (td ,(cadr item))
     119                                   (td ,(time->string (caddr item)))
     120                                   (td ,(cadddr item))))
     121                            items))))
     122     (page-specific-links
     123      *macro* . ,(lambda _
     124                   `(ul (@ (class "page-specific-links"))
     125                        (li (url "?action=show" "show"))
     126                        (li (url "?action=edit" "edit"))
     127                        (li (url "?action=history" "history")))))
     128     ,@alist-conv-rules
     129     )
     130    (
     131     (wiki-page
     132      . ,(lambda (tag . elems)
     133           (list
     134            xhtml-1.0-strict
     135            "<html>"
     136            elems
     137            "</html>")))
    164138
    165     ))
     139     (TOC ;; Re-scan the content for "Section" tags and generate
     140      . ,(lambda (tag . rest) ;; the table of contents
     141           (let ((sections
     142                  (pre-post-order content
     143                                  `(
     144                                    (Section ;; (Section level "content ...")
     145                                     ((*text* . ,(lambda (tag str) str)))
     146                                     . ,(lambda (tag level head-word . elems)
     147                                          (list "<li><a href=\"#" head-word
     148                                                "\">" head-word elems "</a>"))
     149                                     )
     150                                    (*default*
     151                                     . ,(lambda (tag . elems) elems))
     152                                   
     153                                    (*text* . ,(lambda (trigger str) (list)))))))
     154             (list "<div id=\"toc\">"
     155                   "<ul>"
     156                   sections
     157                   "</ul></div>"))))
     158
     159
     160     ,@universal-conversion-rules)
     161    )
     162  )
    166163
    167164)
  • release/4/qwiki/trunk/qwiki.scm

    r15383 r15426  
    7272;; The rules used for transforming page SXML structure
    7373(define (qwiki-transformation-steps content)
    74   (list (append (qwiki-extensions)
    75                 ((qwiki-output-driver) content)
    76                 )))
     74  (append (qwiki-extensions)
     75          ((qwiki-output-driver) content)
     76          ))
    7777
    7878;; The basic template for SXML wiki pages
Note: See TracChangeset for help on using the changeset viewer.