branch: externals/seq
commit d4b6e54a4fd8cf5ca0afecd6ebc24c2f0ad83756
Author: Nicolas Petton <[email protected]>
Commit: Stefan Monnier <[email protected]>
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.
---
seq-24.el | 10 ++++++++++
seq-25.el | 10 ++++++++++
seq.el | 2 +-
tests/seq-tests.el | 5 +++++
4 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/seq-24.el b/seq-24.el
index f34fd11897..fc1d9567bc 100644
--- a/seq-24.el
+++ b/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/seq-25.el b/seq-25.el
index 74153f3174..ecfea3b4e3 100644
--- a/seq-25.el
+++ b/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/seq.el b/seq.el
index 78d9ec1863..603e200df1 100644
--- a/seq.el
+++ b/seq.el
@@ -4,7 +4,7 @@
;; Author: Nicolas Petton <[email protected]>
;; Keywords: sequences
-;; Version: 2.13
+;; Version: 2.14
;; Package: seq
;; Maintainer: [email protected]
diff --git a/tests/seq-tests.el b/tests/seq-tests.el
index cd9c213640..cf3da78b1c 100644
--- a/tests/seq-tests.el
+++ b/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