Function: rx--charset-intervals
rx--charset-intervals is a byte-compiled function defined in rx.el.gz.
Signature
(rx--charset-intervals CHARSET)
Documentation
Return a sorted list of non-adjacent disjoint intervals from CHARSET.
CHARSET is any expression allowed in a character set expression:
characters, single-char strings, any forms (no classes permitted),
or not, or or intersection forms whose arguments are charsets.
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/rx.el.gz
(defun rx--charset-intervals (charset)
"Return a sorted list of non-adjacent disjoint intervals from CHARSET.
CHARSET is any expression allowed in a character set expression:
characters, single-char strings, `any' forms (no classes permitted),
or `not', `or' or `intersection' forms whose arguments are charsets."
(pcase charset
(`(,(or 'any 'in 'char) . ,body)
(let ((parsed (rx--parse-any body)))
(when (cdr parsed)
(error
"Character class not permitted in set operations: %S"
(cadr parsed)))
(car parsed)))
(`(not ,x) (rx--complement-intervals (rx--charset-intervals x)))
(`(,(or 'or '|) . ,body) (rx--charset-union body))
(`(intersection . ,body) (rx--charset-intersection body))
((pred characterp)
(list (cons charset charset)))
((guard (and (stringp charset) (= (length charset) 1)))
(let ((char (string-to-char charset)))
(list (cons char char))))
(_ (let ((expanded (rx--expand-def charset)))
(if expanded
(rx--charset-intervals expanded)
(error "Bad character set: %S" charset))))))