;;; rng-uri.el --- URI parsing and manipulation
-;; Copyright (C) 2003, 2007 Free Software Foundation, Inc.
+;; Copyright (C) 2003, 2007-2015 Free Software Foundation, Inc.
;; Author: James Clark
-;; Keywords: XML
+;; Keywords: wp, hypermedia, languages, XML
;; This file is part of GNU Emacs.
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; GNU Emacs is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
(defun rng-file-name-uri (f)
"Return a URI for the filename F.
-Multibyte characters are left as is. Use `rng-uri-escape-multibyte' to
+Multibyte characters are left as is. Use `rng-uri-escape-multibyte' to
escape them using %HH."
(setq f (expand-file-name f))
(let ((url
((not (string= (downcase scheme) "file"))
(rng-uri-error "URI `%s' does not use the `file:' scheme" uri)))
(when (not (member authority
- (cons system-name '(nil "" "localhost"))))
+ (cons (system-name) '(nil "" "localhost"))))
(rng-uri-error "URI `%s' does not start with `file:///' or `file://localhost/'"
uri))
(when query
(setq path (substring path 1)))
(when (and pattern (string-match "\\`\\./" path))
(setq path (substring path 2)))
- (setq path
+ (setq path
(cond ((eq pattern 'match)
(rng-uri-unescape-unibyte-match path))
((eq pattern 'replace)
(defun rng-uri-error (&rest args)
(signal 'rng-uri-error (list (apply 'format args))))
-(put 'rng-uri-error 'error-conditions '(error rng-uri-error))
-(put 'rng-uri-error 'error-message "Invalid URI")
+(define-error 'rng-uri-error "Invalid URI")
(defun rng-uri-split (str)
(and (string-match "\\`\\(?:\\([^:/?#]+\\):\\)?\
(cons scheme
(cons ":" parts))))
(apply 'concat parts))))
-
+
(defun rng-uri-resolve (uri-ref base-uri)
"Resolve a possibly relative URI reference into absolute form.
URI-REF is the URI reference to be resolved.
(mapcar (lambda (h) (string-to-number h 16))
(split-string str "%")))
'utf-8))
-
+
(defun rng-uri-unescape-unibyte (str)
(replace-regexp-in-string "%[0-7][0-9a-fA-F]"
(lambda (h)
(provide 'rng-uri)
-;; arch-tag: c7b7b8b8-61d1-48ec-82bc-7001c70b2e9d
;;; rng-uri.el ends here