emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] master edd393b: Update seq.el to version 2.14


From: Nicolas Petton
Subject: [elpa] master edd393b: Update seq.el to version 2.14
Date: Tue, 29 Mar 2016 07:27:16 +0000

branch: master
commit edd393bddbf56b9563abb2ddeca7d4e67ea8b977
Author: Nicolas Petton <address@hidden>
Commit: Nicolas Petton <address@hidden>

    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 deletions(-)

diff --git a/packages/seq/seq-24.el b/packages/seq/seq-24.el
index f34fd11..fc1d956 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 74153f3..ecfea3b 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 78d9ec1..603e200 100644
--- a/packages/seq/seq.el
+++ b/packages/seq/seq.el
@@ -4,7 +4,7 @@
 
 ;; Author: Nicolas Petton <address@hidden>
 ;; Keywords: sequences
-;; Version: 2.13
+;; Version: 2.14
 ;; Package: seq
 
 ;; Maintainer: address@hidden
diff --git a/packages/seq/tests/seq-tests.el b/packages/seq/tests/seq-tests.el
index cd9c213..cf3da78 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]