]> git.eshelyaron.com Git - emacs.git/commitdiff
(rfc2368-unhexify-char): Deleted.
authorEli Zaretskii <eliz@gnu.org>
Sun, 7 Mar 2004 20:02:02 +0000 (20:02 +0000)
committerEli Zaretskii <eliz@gnu.org>
Sun, 7 Mar 2004 20:02:02 +0000 (20:02 +0000)
(rfc2368-unhexify-string): Use replace-regexp-in-string.

lisp/ChangeLog
lisp/mail/rfc2368.el

index f357a7dca347faddfda5c8476cc6cae31a96db6f..a7aedbbe57e3e4d945d49b6d2dae297c54d6d7d5 100644 (file)
@@ -1,3 +1,11 @@
+2004-03-07  Dave Love  <fx@gnu.org>
+
+       * net/browse-url.el (rfc2368-parse-mailto-url): Autoload.
+       (browse-url-mail): Use it.
+
+       * mail/rfc2368.el (rfc2368-unhexify-char): Deleted.
+       (rfc2368-unhexify-string): Use replace-regexp-in-string.
+
 2004-03-07  Francis J. Wright  <F.J.Wright@qmul.ac.uk>
 
        * woman.el (woman-man.conf-path): Doc fix.
index 4bfeb9110630a0520bdd4cfcefa89dc53a5d9c2f..07ea44cef04d667a2ba96ed2045b0a80c03525d8 100644 (file)
 (defconst rfc2368-mailto-query-index 4
   "Describes the portion of the url after '?'.")
 
-;; for dealing w/ unhexifying strings, my preferred approach is to use
-;; a 'string-replace-match-using-function' which can perform a
-;; string-replace-match and compute the replacement text based on a
-;; passed function -- however, emacs doesn't seem to have such a
-;; function yet :-(
-
-;; for the moment a rip-off of url-unhex (w3/url.el)
-(defun rfc2368-unhexify-char (char)
-  "Unhexify CHAR -- e.g. %20 -> <SPC>."
-  (if (> char ?9)
-      (if (>= char ?a)
-         (+ 10 (- char ?a))
-       (+ 10 (- char ?A)))
-    (- char ?0)))
-
-;; for the moment a rip-off of url-unhex-string (w3/url.el) (slightly modified)
 (defun rfc2368-unhexify-string (string)
   "Unhexify STRING -- e.g. 'hello%20there' -> 'hello there'."
-  (let ((case-fold-search t)
-       (result ""))
-    (while (string-match "%[0-9a-f][0-9a-f]" string)
-      (let* ((start (match-beginning 0))
-            (hex-code (+ (* 16
-                            (rfc2368-unhexify-char (elt string (+ start 1))))
-                         (rfc2368-unhexify-char (elt string (+ start 2))))))
-       (setq result (concat
-                     result (substring string 0 start)
-                     (char-to-string hex-code))
-             string (substring string (match-end 0)))))
-    ;; it seems clearer to do things this way than to just return:
-    ;; (concat result string)
-    (setq result (concat result string))
-    result))
+  (replace-regexp-in-string "%[[:xdigit:]]\\{2\\}"
+                           (lambda (match)
+                             (string (string-to-number (substring match 1)
+                                                       16)))
+                           string t t))
 
 (defun rfc2368-parse-mailto-url (mailto-url)
   "Parse MAILTO-URL, and return an alist of header-name, header-value pairs.