; Fix last change

* lisp/url/url-util.el (url-build-query-string): Move to after the
definition of 'url-query-key-value-allowed-chars'.
This commit is contained in:
Eli Zaretskii 2024-04-18 13:08:23 +03:00
parent 40629706b1
commit f6c20ed5d5

View file

@ -242,46 +242,6 @@ Will not do anything if `url-show-status' is nil."
(setq retval (cons (list key val) retval)))))
retval))
;;;###autoload
(defun url-build-query-string (query &optional semicolons keep-empty)
"Build a query-string.
Given a QUERY in the form:
((key1 val1)
(key2 val2)
(key3 val1 val2)
(key4)
(key5 \"\"))
\(This is the same format as produced by `url-parse-query-string')
This will return a string
\"key1=val1&key2=val2&key3=val1&key3=val2&key4&key5\". Keys may
be strings or symbols; if they are symbols, the symbol name will
be used.
When SEMICOLONS is given, the separator will be \";\".
When KEEP-EMPTY is given, empty values will show as \"key=\"
instead of just \"key\" as in the example above."
(mapconcat
(lambda (key-vals)
(let ((escaped
(mapcar (lambda (sym)
(url-hexify-string (format "%s" sym) url-query-key-value-allowed-chars))
key-vals)))
(mapconcat (lambda (val)
(let ((vprint (format "%s" val))
(eprint (format "%s" (car escaped))))
(concat eprint
(if (or keep-empty
(and val (not (zerop (length vprint)))))
"="
"")
vprint)))
(or (cdr escaped) '("")) (if semicolons ";" "&"))))
query (if semicolons ";" "&")))
(defun url-unhex (x)
(if (> x ?9)
(if (>= x ?a)
@ -449,6 +409,47 @@ should return it unchanged."
(url-hexify-string frag url-query-allowed-chars)))
(url-recreate-url obj)))
;;;###autoload
(defun url-build-query-string (query &optional semicolons keep-empty)
"Build a query-string.
Given a QUERY in the form:
((key1 val1)
(key2 val2)
(key3 val1 val2)
(key4)
(key5 \"\"))
\(This is the same format as produced by `url-parse-query-string')
This will return a string
\"key1=val1&key2=val2&key3=val1&key3=val2&key4&key5\". Keys may
be strings or symbols; if they are symbols, the symbol name will
be used.
When SEMICOLONS is given, the separator will be \";\".
When KEEP-EMPTY is given, empty values will show as \"key=\"
instead of just \"key\" as in the example above."
(mapconcat
(lambda (key-vals)
(let ((escaped
(mapcar (lambda (sym)
(url-hexify-string (format "%s" sym)
url-query-key-value-allowed-chars))
key-vals)))
(mapconcat (lambda (val)
(let ((vprint (format "%s" val))
(eprint (format "%s" (car escaped))))
(concat eprint
(if (or keep-empty
(and val (not (zerop (length vprint)))))
"="
"")
vprint)))
(or (cdr escaped) '("")) (if semicolons ";" "&"))))
query (if semicolons ";" "&")))
;;;###autoload
(defun url-file-extension (fname &optional x)
"Return the filename extension of FNAME.