;; $Revision: 1.2 $ $Date: 2005/07/11 23:36:16 $ (module sxml-transforms ( ;; SXML-tree-trans.scm -- This does not depend on anything else SRV:send-reply pre-post-order post-order pre-post-order-splice foldts replace-range ;; SXML-to-HTML.scm -- needs make-char-quotator SXML->HTML entag enattr string->goodHTML ;; SXML-to-HTML-ext.scm universal-conversion-rules universal-protected-rules alist-conv-rules ;; util.scm make-char-quotator ;; chicken/xhtml.scm entag-xhtml entag-html ;; Alternatives to work around apply limit pre-post-order* pre-post-order-splice* universal-conversion-rules* universal-protected-rules* alist-conv-rules* ) (import (chicken base) scheme) (import (chicken posix)) (import (srfi-13)) (define inc add1) (define dec sub1) (define nl (string #\newline)) ;; for SXML->HTML ; like cout << arguments << args ; where argument can be any Scheme object. If it's a procedure ; (without args) it's executed rather than printed (like newline) (define (cout . args) (for-each (lambda (x) (if (procedure? x) (x) (display x))) args)) (define (cerr . args) (for-each (lambda (x) (if (procedure? x) (x (current-error-port)) (display x (current-error-port)))) args)) ;;; Includes (include "SSAX/lib/util.scm") ;; for make-char-quotator only (include "SSAX/lib/SXML-tree-trans.scm") (include "SSAX/lib/lookup-def.scm") (include "SSAX/lib/SXML-to-HTML.scm") ;; Warning: this needs nl at runtime (unless macro) ;; Override the entag in SXML-to-HTML-ext's universal-conversion-rules ;; to use entag-xhtml, as well as the user's view of entag. (define entag-html entag) (include "chicken/xhtml.scm") ;; for entag-xhtml (define entag entag-xhtml) (define OS:file-length file-size) (include "SSAX/lib/SXML-to-HTML-ext.scm") ;; Not trimmed, but non-exported code ;; will not be compiled in. ;; Chicken allows a limited number of arguments to procedures using APPLY. ;; The following file attempts to fix a few of those problems. (include "chicken/apply-limit-fixes.scm") ;;; Tack rules on to the universal conversion rules. (let* ((handler (lambda (tag elts) (map (lambda (elt) (string-append "&" elt ";")) elts))) ;; (& STR1 ...) : Quotes character references given by strings STR1 ... ;; Conforms to HTMLprag's syntax. Example: ;; (& "ndash" "quot" ...) => ("–" """ ...) (extra-rules* `((& . ,handler))) (extra-rules `((& . ,(lambda (tag . elts) (handler tag elts)))))) (set! universal-conversion-rules* (append universal-conversion-rules* extra-rules*)) (set! universal-protected-rules* (append universal-protected-rules* extra-rules*)) (set! universal-conversion-rules (append universal-conversion-rules extra-rules)) (set! universal-protected-rules (append universal-protected-rules extra-rules))) )