Changeset 15354 in project for release/4/sxml-fu/sxml-shortcuts.scm


Ignore:
Timestamp:
08/07/09 14:38:18 (12 years ago)
Author:
sjamaan
Message:

Add convenience procedures for folding many rules into an XML output

File:
1 edited

Legend:

Unmodified
Added
Removed
  • release/4/sxml-fu/sxml-shortcuts.scm

    r12365 r15354  
    3333(import chicken scheme)
    3434
    35 (require-extension srfi-1)
     35(require-extension srfi-1 uri-common)
    3636
    3737(define shortcut-rules
    3838  `((url *macro* . ,(lambda (tag href . contents)
    39                       `(a (@ (href ,href))
    40                           ,@(if (not (null? contents))
    41                                 contents
    42                                 (list href)))))
     39                      (let ((href (if (uri-reference? href)
     40                                      (uri->string href)
     41                                      href)))
     42                       `(a (@ (href ,href))
     43                           ,@(if (not (null? contents))
     44                                 contents
     45                                 (list href))))))
    4346    (pic *macro* . ,(lambda (tag src alt . rest)
    44                       (let-optionals* rest ((title alt) more)
    45                                       `(img (@ ,@(append `((src ,src)
    46                                                            (alt ,alt)
    47                                                            (title ,title)
    48                                                            ,@more)))))))
     47                      (let ((src (if (uri-reference? src)
     48                                     (uri->string src)
     49                                     src)))
     50                        (let-optionals* rest ((title alt) more)
     51                                        `(img (@ ,@(append `((src ,src)
     52                                                             (alt ,alt)
     53                                                             (title ,title)
     54                                                             ,@more))))))))
    4955    (movie *macro* . ,(lambda (tag src title . rest)
    50                         `(object (@ (type "video/quicktime"))
    51                                  (param (@ (name "src") (value ,src)))
    52                                  (param (@ (name "controller") (value "true")))
    53                                  ,@rest
    54                                  ;; Fallback if no viewer
    55                                  (url ,src ,title))))
     56                        (let ((src (if (uri-reference? src)
     57                                      (uri->string src)
     58                                      src)))
     59                         `(object (@ (type "video/quicktime"))
     60                                  (param (@ (name "src") (value ,src)))
     61                                  (param (@ (name "controller") (value "true")))
     62                                  ,@rest
     63                                  ;; Fallback if no viewer
     64                                  (url ,src ,title)))))
    5665    (*text* . ,(lambda (tag str) str))
    5766    (*default* . ,(lambda x x)))))
Note: See TracChangeset for help on using the changeset viewer.