Function: url-parse-args
url-parse-args is an autoloaded and byte-compiled function defined in
url-util.el.gz.
Signature
(url-parse-args STR &optional NODOWNCASE)
Source Code
;; Defined in /usr/src/emacs/lisp/url/url-util.el.gz
;;;###autoload
(defun url-parse-args (str &optional nodowncase)
;; Return an assoc list of attribute/value pairs from a string
;; that uses RFC 822 (or later) format.
(let (name ; From name=
value ; its value
results ; Assoc list of results
name-pos ; Start of XXXX= position
val-pos) ; Start of value position
(with-temp-buffer
(insert str)
(set-syntax-table url-parse-args-syntax-table)
(goto-char (point-min))
(while (not (eobp))
(skip-chars-forward "; \n\t")
(setq name-pos (point))
(skip-chars-forward "^ \n\t=;")
(unless nodowncase
(downcase-region name-pos (point)))
(setq name (buffer-substring name-pos (point)))
(skip-chars-forward " \t\n")
(if (/= (or (char-after (point)) 0) ?=) ; There is no value
(setq value nil)
(skip-chars-forward " \t\n=")
(setq val-pos (point)
value
(cond
((or (= (or (char-after val-pos) 0) ?\")
(= (or (char-after val-pos) 0) ?'))
(buffer-substring (1+ val-pos)
(condition-case ()
(prog2
(forward-sexp 1)
(1- (point))
(skip-chars-forward "\""))
(error
(skip-chars-forward "^ \t\n")
(point)))))
(t
(buffer-substring val-pos
(progn
(skip-chars-forward "^;")
(skip-chars-backward " \t")
(point)))))))
(setq results (cons (cons name value) results))
(skip-chars-forward "; \n\t"))
results)))