Function: range-uncompress

range-uncompress is a byte-compiled function defined in range.el.gz.

Signature

(range-uncompress RANGES)

Documentation

Expand a list of ranges into a list of numbers.

RANGES is either a single range on the form (num . num) or a list of these ranges.

Aliases

gnus-uncompress-range (obsolete since 29.1) gnus-uncompress-sequence

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/range.el.gz
(defun range-uncompress (ranges)
  "Expand a list of ranges into a list of numbers.
RANGES is either a single range on the form `(num . num)' or a list of
these ranges."
  (let (first last result)
    (cond
     ((null ranges)
      nil)
     ((not (listp (cdr ranges)))
      (setq first (car ranges))
      (setq last (cdr ranges))
      (while (<= first last)
	(setq result (cons first result))
	(setq first (1+ first)))
      (nreverse result))
     (t
      (while ranges
	(if (atom (car ranges))
	    (when (numberp (car ranges))
	      (setq result (cons (car ranges) result)))
	  (setq first (caar ranges))
	  (setq last  (cdar ranges))
	  (while (<= first last)
	    (setq result (cons first result))
	    (setq first (1+ first))))
	(setq ranges (cdr ranges)))
      (nreverse result)))))