From edd393bddbf56b9563abb2ddeca7d4e67ea8b977 Mon Sep 17 00:00:00 2001 From: Nicolas Petton Date: Tue, 29 Mar 2016 09:25:33 +0200 Subject: [PATCH] Update seq.el to version 2.14 * packages/seq/seq.el: Bump version number. * packages/seq/seq-24.el (seq-sort-by): New function. * packages/seq/seq-25.el (seq-sort-by): New function. * packages/seq/tests/seq-tests.el: Add a test for seq-sort-by. --- packages/seq/seq-24.el | 10 ++++++++++ packages/seq/seq-25.el | 10 ++++++++++ packages/seq/seq.el | 2 +- packages/seq/tests/seq-tests.el | 5 +++++ 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/packages/seq/seq-24.el b/packages/seq/seq-24.el index f34fd1189..fc1d9567b 100644 --- a/packages/seq/seq-24.el +++ b/packages/seq/seq-24.el @@ -202,6 +202,16 @@ The result is a sequence of the same type as SEQUENCE." (let ((result (seq-sort predicate (append sequence nil)))) (seq-into result (type-of sequence))))) +(defun seq-sort-by (function pred sequence) + "Sort SEQUENCE using PRED as a comparison function. +Elements of SEQUENCE are transformed by FUNCTION before being +sorted. FUNCTION must be a function of one argument." + (seq-sort (lambda (a b) + (funcall pred + (funcall function a) + (funcall function b))) + sequence)) + (defun seq-contains (sequence elt &optional testfn) "Return the first element in SEQUENCE that equals to ELT. Equality is defined by TESTFN if non-nil or by `equal' if nil." diff --git a/packages/seq/seq-25.el b/packages/seq/seq-25.el index 74153f317..ecfea3b4e 100644 --- a/packages/seq/seq-25.el +++ b/packages/seq/seq-25.el @@ -218,6 +218,16 @@ The result is a sequence of the same type as SEQUENCE." (let ((result (seq-sort pred (append sequence nil)))) (seq-into result (type-of sequence)))) +(defun seq-sort-by (function pred sequence) + "Sort SEQUENCE using PRED as a comparison function. +Elements of SEQUENCE are transformed by FUNCTION before being +sorted. FUNCTION must be a function of one argument." + (seq-sort (lambda (a b) + (funcall pred + (funcall function a) + (funcall function b))) + sequence)) + (cl-defmethod seq-sort (pred (list list)) (sort (seq-copy list) pred)) diff --git a/packages/seq/seq.el b/packages/seq/seq.el index 78d9ec186..603e200df 100644 --- a/packages/seq/seq.el +++ b/packages/seq/seq.el @@ -4,7 +4,7 @@ ;; Author: Nicolas Petton ;; Keywords: sequences -;; Version: 2.13 +;; Version: 2.14 ;; Package: seq ;; Maintainer: emacs-devel@gnu.org diff --git a/packages/seq/tests/seq-tests.el b/packages/seq/tests/seq-tests.el index cd9c21364..cf3da78b1 100644 --- a/packages/seq/tests/seq-tests.el +++ b/packages/seq/tests/seq-tests.el @@ -345,5 +345,10 @@ Evaluate BODY for each created sequence. '(11 22 33 44 55))) (should (equal (seq-mapn #'+ seq seq-2 nil) nil))))) +(ert-deftest test-seq-sort-by () + (let ((seq ["x" "xx" "xxx"])) + (should (equal (seq-sort-by #'seq-length #'> seq) + ["xxx" "xx" "x"])))) + (provide 'seq-tests) ;;; seq-tests.el ends here -- 2.39.2