]> git.eshelyaron.com Git - emacs.git/commitdiff
Make url-hexify-string accept a list of allowed chars (bug#26469)
authorHong Xu <hong@topbug.net>
Mon, 14 Oct 2019 04:46:47 +0000 (06:46 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Mon, 14 Oct 2019 04:46:47 +0000 (06:46 +0200)
* lisp/url/url-util.el (url-hexify-string): Accept a list of allowed
chars.
* doc/misc/url.texi (URI Encoding): Update url-hexify-string doc and
index improvements (bug#24694).

doc/misc/url.texi
lisp/url/url-util.el

index e72d9bfe3d2efd8080aadb392c4a4b78f87bfa1b..79dead185dd0e566ad65a96321e371449df22f6e 100644 (file)
@@ -221,6 +221,7 @@ URI's @var{port} slot is @code{nil}.
 @section URI Encoding
 
 @cindex percent encoding
+@findex url-generic-parse-url
   The @code{url-generic-parse-url} parser does not obey RFC 3986 in
 one respect: it allows non-@acronym{ASCII} characters in URI strings.
 
@@ -233,6 +234,7 @@ then percent encoded to @samp{%D3%A7}.  (Certain ``reserved''
 @acronym{ASCII} characters must also be percent encoded when they
 appear in URI components.)
 
+@findex url-encode-url
   The function @code{url-encode-url} can be used to convert a URI
 string containing arbitrary characters to one that is properly
 percent-encoded in accordance with RFC 3986.
@@ -244,6 +246,8 @@ e.g., converting the scheme component to lowercase if it was
 previously uppercase.
 @end defun
 
+@findex url-hexify-string
+@findex url-unhex-string
   To convert between a string containing arbitrary characters and a
 percent-encoded all-@acronym{ASCII} string, use the functions
 @code{url-hexify-string} and @code{url-unhex-string}:
@@ -263,8 +267,8 @@ The allowed characters are specified by @var{allowed-chars}.  If this
 argument is @code{nil}, the allowed characters are those specified as
 @dfn{unreserved characters} by RFC 3986 (see the variable
 @code{url-unreserved-chars}).  Otherwise, @var{allowed-chars} should
-be a vector whose @var{n}-th element is non-@code{nil} if character
-@var{n} is allowed.
+be either a list of allowed chars, or a vector whose Nth element is
+non-nil if character N is allowed.
 @end defun
 
 @defun url-unhex-string string &optional allow-newlines
index a390723e73dc06dca21a625a9be349f2a9cfa4af..223a6ba9829ea6fffa3458813b1278c0c2809a1a 100644 (file)
@@ -395,9 +395,12 @@ string: \"%\" followed by two upper-case hex digits.
 
 The allowed characters are specified by ALLOWED-CHARS.  If this
 argument is nil, the list `url-unreserved-chars' determines the
-allowed characters.  Otherwise, ALLOWED-CHARS should be a vector
-whose Nth element is non-nil if character N is allowed."
-  (unless allowed-chars
+allowed characters.  Otherwise, ALLOWED-CHARS should be either a
+list of allowed chars, or a vector whose Nth element is non-nil
+if character N is allowed."
+  (if allowed-chars
+      (unless (vectorp allowed-chars)
+        (setq allowed-chars (url--allowed-chars allowed-chars)))
     (setq allowed-chars (url--allowed-chars url-unreserved-chars)))
   (mapconcat (lambda (byte)
               (if (aref allowed-chars byte)