From 54a75e6f7c580d5821e8b6f695b3c51240f966cd Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Tue, 20 Oct 2015 10:27:59 +0200 Subject: [PATCH] Update seq.el to version 1.11 * packages/seq/seq.el: * packages/seq/tests/seq-tests.el: Update. --- packages/seq/seq.el | 16 +++++++++++++--- packages/seq/tests/seq-tests.el | 9 +++++++++ 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/packages/seq/seq.el b/packages/seq/seq.el index 3fd7cf735..58f69032c 100644 --- a/packages/seq/seq.el +++ b/packages/seq/seq.el @@ -4,7 +4,7 @@ ;; Author: Nicolas Petton ;; Keywords: sequences -;; Version: 1.9 +;; Version: 1.11 ;; Package: seq ;; Maintainer: emacs-devel@gnu.org @@ -165,8 +165,7 @@ If SEQ is empty, return INITIAL-VALUE and FUNCTION is not called." acc))) (defun seq-some (pred seq) - "Return non-nil if (PRED element) is non-nil for any element in SEQ, nil otherwise. -If so, return the non-nil value returned by PRED." + "Return the first value for which if (PRED element) is non-nil for in SEQ." (catch 'seq--break (seq-doseq (elt seq) (let ((result (funcall pred elt))) @@ -224,6 +223,17 @@ Equality is defined by TESTFN if non-nil or by `equal' if nil." (funcall (or testfn #'equal) elt e)) seq)) +(defun seq-position (seq elt &optional testfn) + "Return the index of the first element in SEQ that is equal to ELT. +Equality is defined by TESTFN if non-nil or by `equal' if nil." + (let ((index 0)) + (catch 'seq--break + (seq-doseq (e seq) + (when (funcall (or testfn #'equal) e elt) + (throw 'seq--break index)) + (setq index (1+ index))) + nil))) + (defun seq-uniq (seq &optional testfn) "Return a list of the elements of SEQ with duplicates removed. TESTFN is used to compare elements, or `equal' if TESTFN is nil." diff --git a/packages/seq/tests/seq-tests.el b/packages/seq/tests/seq-tests.el index deedfb8c3..8f2dfbb27 100644 --- a/packages/seq/tests/seq-tests.el +++ b/packages/seq/tests/seq-tests.el @@ -313,5 +313,14 @@ Evaluate BODY for each created sequence. (should (= (seq-min seq) 0)) (should (= (seq-max seq) 5)))) +(ert-deftest test-seq-position () + (with-test-sequences (seq '(2 4 6)) + (should (null (seq-position seq 1))) + (should (= (seq-position seq 4) 1))) + (let ((seq '(a b c))) + (should (null (seq-position seq 'd #'eq))) + (should (= (seq-position seq 'a #'eq) 0)) + (should (null (seq-position seq (make-symbol "a") #'eq))))) + (provide 'seq-tests) ;;; seq-tests.el ends here -- 2.39.2