Changeset 18959 in project


Ignore:
Timestamp:
07/24/10 14:48:38 (10 years ago)
Author:
sjamaan
Message:

uri-common: Fix a bug that caused the presence of #f values to be detectable and distinguishable from no values

Location:
release/4/uri-common/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • release/4/uri-common/trunk/tests/run.scm

    r16336 r18959  
    22(import uri-common)
    33(use test)
     4
     5(test-begin "uri-common")
    46
    57(define internal-representation-cases
     
    4648    ("query ",uri-query
    4749     ("//" ())
     50     ("?" ((|| . #t)))
    4851     ("?foo" ((foo . #t)))
    4952     ("?foo?bar" ((foo?bar . #t)))
     
    158161    (((|| . "") (|| . "")) "=;=")
    159162    (((|| . "")) "=")
    160     ;;(((|| . #t)) "")                    ; Can't be distinguished from ()
     163    (((|| . #t)) "")
    161164    (((a&b . "1") (c . "2;3") (e . "4"))
    162165     "a%26b=1;c=2%3B3;e=4"
     
    195198        '("foo=bar&qux=mooh" "foo=bar;qux=mooh")
    196199        (list (form-urlencode '((foo . "bar") (qux . "mooh")) separator: "&;")
    197               (form-urlencode '((foo . "bar") (qux . "mooh")) separator: ";&"))))
     200              (form-urlencode '((foo . "bar") (qux . "mooh")) separator: ";&")))
     201  (test "False values can't be distinguished from missing values"
     202        #f
     203        (form-urlencode '((foo . #f)))))
     204
     205(test-end)
  • release/4/uri-common/trunk/uri-common.scm

    r16336 r18959  
    55;; encoding/decoding
    66;;
    7 ; Copyright (c) 2008-2009, Peter Bex
     7; Copyright (c) 2008-2010, Peter Bex
    88; All rights reserved.
    99;
     
    274274                                       (char-set-delete char-set:query/fragment
    275275                                                        #\space)))
    276                       '((" " . "+"))))))
    277          (string-join
    278           (reverse (fold
    279                     (lambda (arg query)
    280                       (match arg
     276                      '((" " . "+")))))
     277              (encoded-components
     278               (reverse (fold
     279                         (lambda (arg query)
     280                           (match arg
    281281                             ((a . #f) query)
    282282                             ((a . #t) (cons (enc (->string a)) query))
     
    286286                                                (enc (->string b)))
    287287                                       query))))
    288                     '() alist))
    289           separator-string))))
     288                         '() alist))))
     289         (and (not (null? encoded-components))
     290              (string-join encoded-components separator-string)))))
    290291
    291292(define (form-urldecode query #!key (separator (form-urlencoded-separator)))
Note: See TracChangeset for help on using the changeset viewer.