]> git.eshelyaron.com Git - emacs.git/commitdiff
Add seq-mapcat
authorNicolas Petton <nicolas@petton.fr>
Fri, 6 Feb 2015 14:52:23 +0000 (15:52 +0100)
committerNicolas Petton <nicolas@petton.fr>
Fri, 6 Feb 2015 14:52:23 +0000 (15:52 +0100)
* lisp/emacs-lisp/seq.el (seq-mapcat): New function
* test/automated/seq-tests.el: Add unit tests for seq-mapcat

lisp/ChangeLog
lisp/emacs-lisp/seq.el
test/ChangeLog
test/automated/seq-tests.el

index 32bbd2ccf3f59b8740f5c8313194095789412d90..aa58c5349aaa9b86fe5472558e87fb3d0ee354b9 100644 (file)
@@ -1,3 +1,7 @@
+2015-02-06  Nicolas Petton <nicolas@petton.fr>
+
+       * emacs-lisp/seq.el (seq-mapcat): New function.
+
 2015-02-06  Artur Malabarba  <bruce.connor.am@gmail.com>
 
        * doc-view.el (doc-view-kill-proc-and-buffer): Obsolete. Use
index b28153b7f812bf626884188a8306ba6e9336dd3f..bd234a3b55ae70822f794c11b0995ea2e4934c94 100644 (file)
@@ -2,9 +2,9 @@
 
 ;; Copyright (C) 2014-2015 Free Software Foundation, Inc.
 
-;; Author: Nicolas Petton <petton.nicolas@gmail.com>
+;; Author: Nicolas Petton <nicolas@petton.fr>
 ;; Keywords: sequences
-;; Version: 1.0
+;; Version: 1.1
 
 ;; Maintainer: emacs-devel@gnu.org
 
@@ -224,6 +224,12 @@ TYPE must be one of following symbols: vector, string or list.
     (`list (apply #'append (append seqs '(nil))))
     (t (error "Not a sequence type name: %s" type))))
 
+(defun seq-mapcat (function seq &optional type)
+  "Concatenate the result of applying FUNCTION to each element of SEQ.
+The result is a sequence of type TYPE, or a list if TYPE is nil."
+  (apply #'seq-concatenate (or type 'list)
+         (seq-map function seq)))
+
 (defun seq--drop-list (list n)
   "Optimized version of `seq-drop' for lists."
   (while (and list (> n 0))
index 23c48708b6c57b85e155002036ce4d09250b2305..9ae9db3f8fb99d7a03b8dd479d5c1aa7a6d7e0b5 100644 (file)
@@ -1,3 +1,7 @@
+2015-02-02 Nicolas Petton <nicolas@petton.fr>
+
+       * automated/seq-tests.el: New test for seq-mapcat.
+
 2015-02-05  Artur Malabarba  <bruce.connor.am@gmail.com>
 
        * automated/package-test.el (package-test-get-deps): Fix typo.
index 23989799306a6b951378e4a2215a76ba354a49dd..cc89c889675d51c9a600022e1a277b7aa278a999 100644 (file)
@@ -2,7 +2,7 @@
 
 ;; Copyright (C) 2014-2015 Free Software Foundation, Inc.
 
-;; Author: Nicolas Petton <petton.nicolas@gmail.com>
+;; Author: Nicolas Petton <nicolas@petton.fr>
 ;; Maintainer: emacs-devel@gnu.org
 
 ;; This file is part of GNU Emacs.
@@ -197,5 +197,13 @@ Evaluate BODY for each created sequence.
     (should (equal (seq-concatenate 'vector nil '(8 10)) [8 10]))
     (should (equal (seq-concatenate 'vector seq nil) [2 4 6]))))
 
+(ert-deftest test-seq-mapcat ()
+  (should (equal (seq-mapcat #'seq-reverse '((3 2 1) (6 5 4)))
+                 '(1 2 3 4 5 6)))
+  (should (equal (seq-mapcat #'seq-reverse '[(3 2 1) (6 5 4)])
+                 '(1 2 3 4 5 6)))
+  (should (equal (seq-mapcat #'seq-reverse '((3 2 1) (6 5 4)) 'vector)
+                 '[1 2 3 4 5 6])))
+
 (provide 'seq-tests)
 ;;; seq-tests.el ends here