summaryrefslogtreecommitdiffstats
path: root/html4each.scm
diff options
context:
space:
mode:
Diffstat (limited to 'html4each.scm')
-rw-r--r--html4each.scm22
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))))))))