diff options
Diffstat (limited to 'html4each.scm')
-rw-r--r-- | html4each.scm | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/html4each.scm b/html4each.scm index 02e666e..f115616 100644 --- a/html4each.scm +++ b/html4each.scm @@ -225,16 +225,28 @@ (reverse fields)) ((eqv? #\> chr) (cons element (reverse fields))) ((char-whitespace? chr) (read-char port) (loop (peek-char port))) - ((case (fscanf port "%[a-zA-Z0-9]%[=]%[-.a-zA-Z0-9]" name junk value) + ((case (fscanf port "%[a-zA-Z0-9]%[=]%[-.a-zA-Z0-9]" + name junk value) ((3 1) #t) ((2) (case (peek-char port) - ((#\") (eqv? 1 (fscanf port "\"%[^\"]\"" value))) - ((#\') (eqv? 1 (fscanf port "'%[^']'" value))) + ((#\") (cond ((eqv? 1 (fscanf port "\"%[^\"]\"" value))) + ((eqv? #\" (peek-char port)) + (read-char port) + (set! value "")) + (else #f))) + ((#\') (cond ((eqv? 1 (fscanf port "'%[^']'" value))) + ((eqv? #\' (peek-char port)) + (read-char port) + (set! value "")) + (else #f))) (else #f))) (else #f)) (set! fields (cons (cons (string-ci->symbol name) - (or (string->number value) value)) + (if (string? value) + (or (string->number value) value) + value)) fields)) (loop (peek-char port))) - (else (slib:warn 'htm-fields 'bad 'field htm) (reverse fields)))))))) + (else (slib:warn 'htm-fields 'bad 'field htm) + (reverse fields)))))))) |