Function: erc--parse-isupport-value
erc--parse-isupport-value is a byte-compiled function defined in
erc-backend.el.gz.
Signature
(erc--parse-isupport-value VALUE)
Documentation
Return list of unescaped components from an "ISUPPORT" VALUE.
Source Code
;; Defined in /usr/src/emacs/lisp/erc/erc-backend.el.gz
(defun erc--parse-isupport-value (value)
"Return list of unescaped components from an \"ISUPPORT\" VALUE."
;; https://tools.ietf.org/html/draft-brocklesby-irc-isupport-03#section-2
;;
;; > The server SHOULD send "X", not "X="; this is the normalized form.
;;
(let (case-fold-search)
(mapcar
(lambda (v)
(let ((start 0)
m
c)
(while (and (< start (length v))
(string-match "[\\]x[0-9A-F][0-9A-F]" v start))
(setq m (substring v (+ 2 (match-beginning 0)) (match-end 0))
c (string-to-number m 16))
;; In practice, this range is too liberal. The only
;; escapes we're likely to see are ?\\, ?=, and ?\s.
(if (<= ?\s c ?~)
(setq v (concat (substring v 0 (match-beginning 0))
(string c)
(substring v (match-end 0)))
start (- (match-end 0) 3))
(setq start (match-end 0))))
v))
(if (string-search "," value)
(split-string value ",")
(list value)))))