On Aug 8, 2005, at 1:17 PM, Christian wrote:
BTW, I've made some corrections to (that version of) your library and put that up with my latest version of chjmodule on http:// scheme.mine.nu/gambit/chjmodule/
To be more precise: these are the relevant changes out of the diff:
(define-type html id: a121f3a9-a905-4db5-b2c2-6da0a7e47046 read-only: - unprintable: + ;;unprintable: cj: why making debugging more difficult?
--
(define (protect x) (cond ((pair? x) (for-each protect x)) ((html? x) - (d (html-pre-tag x)) + ;;(d (html-pre-tag x)) + ;;cj: escape attribute values!: + ;; example: pre-tag: ("\n<p" (" onmousedown=" "fun") (" align=" "center") ">") + (let ((l (html-pre-tag x))) + (d (car l)) + (let lp ((l (cdr l))) + (if (not (null? l)) + (let ((a (car l))) + (cond ((pair? a) + (d (car a)) + (d #\") + (protect (cdr a)) + (d #\")) + (else (d a))) + (lp (cdr l)))))) (protect (html-body x))
I just looked at the html-lib.scm I sent you, and indeed it does the same thing: (for-each (lambda (attribute) (##write-substring " " 0 1 port) (let ((name (attribute-name attribute))) (##write-substring name 0 (string-length name) port)) (if (attribute-takes-value? attribute) (begin (##write-substring "=\"" 0 2 port) (protect (attribute-value attribute)) (##write-substring "\"" 0 1 port)))) (html-form-attributes x)) So I must have added the same capability after the version that Marc started with. Sorry for not noticing that before. I tried to study the differences between the files using both diff and ediff in emacs, and the result was a mess. Later I used the emacs "Indent region" command on both files before using ediff, and that helped. I forgot the dt tag in the version that Marc and you used, so please add (define-tag dt start-newline?: #t) to your library. I also changed a lot more tags to start a newline. Perhaps I should just do as Oleg does in http://okmij.org/ftp/Scheme/SXML.scm and have all block-level html plus <BR> start a newline. Brad