RosettaCodeData/Task/Range-extraction/Emacs-Lisp/range-extraction-1.el
2026-04-30 12:34:36 -04:00

17 lines
527 B
EmacsLisp

(require 'gnus-range)
(defun rangext (lst)
(mapconcat (lambda (item)
(if (consp item)
(if (= (+ 1 (car item)) (cdr item))
(format "%d,%d" (car item) (cdr item))
(format "%d-%d" (car item) (cdr item)))
(format "%d" item)))
(gnus-compress-sequence lst)
","))
(rangext '(0 1 2 4 6 7 8 11 12 14
15 16 17 18 19 20 21 22 23 24
25 27 28 29 30 31 32 33 35 36
37 38 39))
;; => "0-2,4,6-8,11,12,14-25,27-33,35-39"