[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/dash 0df0ff1 067/316: Merge pull request #222 from zck/
From: |
ELPA Syncer |
Subject: |
[elpa] externals/dash 0df0ff1 067/316: Merge pull request #222 from zck/partition-before-after |
Date: |
Mon, 15 Feb 2021 15:57:27 -0500 (EST) |
branch: externals/dash
commit 0df0ff1a65d54377381e50c08d88b247db44c3dd
Merge: b4faa93 13a4718
Author: Matus Goljer <dota.keys@gmail.com>
Commit: GitHub <noreply@github.com>
Merge pull request #222 from zck/partition-before-after
Add new methods to partition a list each time elements occur, or a
predicate is true, but include those elements in the list.
---
dash.el | 30 ++++++++++++++++++++++++++++++
dev/examples.el | 31 +++++++++++++++++++++++++++++++
2 files changed, 61 insertions(+)
diff --git a/dash.el b/dash.el
index 9965953..9d30c6a 100644
--- a/dash.el
+++ b/dash.el
@@ -1032,6 +1032,36 @@ returns the header value, but only after seeing at least
one
other value (the body)."
(--partition-by-header (funcall fn it) list))
+(defun -partition-after-pred (pred list)
+ "Partition directly after each time PRED is true on an element of LIST."
+ (when list
+ (let ((rest (-partition-after-pred pred
+ (cdr list))))
+ (if (funcall pred (car list))
+ ;;split after (car list)
+ (cons (list (car list))
+ rest)
+
+ ;;don't split after (car list)
+ (cons (cons (car list)
+ (car rest))
+ (cdr rest))))))
+
+(defun -partition-before-pred (pred list)
+ "Partition directly before each time PRED is true on an element of LIST."
+ (nreverse (-map #'reverse
+ (-partition-after-pred pred (reverse list)))))
+
+(defun -partition-after-item (item list)
+ "Partition directly after each time ITEM appears in LIST."
+ (-partition-after-pred (lambda (ele) (equal ele item))
+ list))
+
+(defun -partition-before-item (item list)
+ "Partition directly before each time ITEM appears in LIST."
+ (-partition-before-pred (lambda (ele) (equal ele item))
+ list))
+
(defmacro --group-by (form list)
"Anaphoric form of `-group-by'."
(declare (debug t))
diff --git a/dev/examples.el b/dev/examples.el
index 09b8262..a192a63 100644
--- a/dev/examples.el
+++ b/dev/examples.el
@@ -506,6 +506,37 @@ new list."
(--partition-by-header (> it 0) '(1 2 0 1 0 1 2 3 0)) => '((1 2 0) (1 0)
(1 2 3 0))
(-partition-by-header 'even? '(2 1 1 1 4 1 3 5 6 6 1)) => '((2 1 1 1) (4 1
3 5) (6 6 1)))
+ (defexamples -partition-after-pred
+ (-partition-after-pred #'oddp '()) => '()
+ (-partition-after-pred #'oddp '(1)) => '((1))
+ (-partition-after-pred #'oddp '(0 1)) => '((0 1))
+ (-partition-after-pred #'oddp '(1 1)) => '((1) (1))
+ (-partition-after-pred #'oddp '(0 0 0 1 0 1 1 0 1)) => '((0 0 0 1) (0 1)
(1) (0 1)))
+
+ (defexamples -partition-before-pred
+ (-partition-before-pred #'oddp '()) => '()
+ (-partition-before-pred #'oddp '(1)) => '((1))
+ (-partition-before-pred #'oddp '(0 1)) => '((0) (1))
+ (-partition-before-pred #'oddp '(1 1)) => '((1) (1))
+ (-partition-before-pred #'oddp '(0 1 0)) => '((0) (1 0))
+ (-partition-before-pred #'oddp '(0 0 0 1 0 1 1 0 1)) => '((0 0 0) (1 0)
(1) (1 0) (1)))
+
+ (defexamples -partition-before-item
+ (-partition-before-item 3 '()) => '()
+ (-partition-before-item 3 '(1)) => '((1))
+ (-partition-before-item 3 '(3)) => '((3))
+ (-partition-before-item 3 '(1 3)) => '((1) (3))
+ (-partition-before-item 3 '(1 3 4)) => '((1) (3 4))
+ (-partition-before-item 3 '(1 2 3 2 3 3 4)) => '((1 2) (3 2) (3) (3 4)))
+
+ (defexamples -partition-after-item
+ (-partition-after-item 3 '()) => '()
+ (-partition-after-item 3 '(1)) => '((1))
+ (-partition-after-item 3 '(3)) => '((3))
+ (-partition-after-item 3 '(3 1)) => '((3) (1))
+ (-partition-after-item 3 '(3 1 3)) => '((3) (1 3))
+ (-partition-after-item 3 '(3 2 3 3 4 5 3 2)) => '((3) (2 3) (3) (4 5 3)
(2)))
+
(defexamples -group-by
(-group-by 'even? '()) => '()
(-group-by 'even? '(1 1 2 2 2 3 4 6 8)) => '((nil . (1 1 3)) (t . (2 2 2 4
6 8)))
- [elpa] externals/dash 84721fc 206/316: Optimize -repeat a bit, (continued)
- [elpa] externals/dash 84721fc 206/316: Optimize -repeat a bit, ELPA Syncer, 2021/02/15
- [elpa] externals/dash d983d4f 217/316: Fix -doto, ELPA Syncer, 2021/02/15
- [elpa] externals/dash 66e3e94 079/316: Define -second-item through to -fifth-item, ELPA Syncer, 2021/02/15
- [elpa] externals/dash dd30a1f 047/316: [Feature #196] Add -powerset and -permutations (#203), ELPA Syncer, 2021/02/15
- [elpa] externals/dash 5f7f2d6 056/316: Add example for an iota error condition, ELPA Syncer, 2021/02/15
- [elpa] externals/dash 524e6fe 057/316: Fix -map-last docs (#220), ELPA Syncer, 2021/02/15
- [elpa] externals/dash a3b40f8 058/316: Make --> bind IT for use anywhere in FORMS, and add -as->., ELPA Syncer, 2021/02/15
- [elpa] externals/dash 13f9ece 060/316: add tests for nesting anaphoric macros., ELPA Syncer, 2021/02/15
- [elpa] externals/dash d7b769b 065/316: Use standard Emacs quoting for bound symbols, ELPA Syncer, 2021/02/15
- [elpa] externals/dash b4faa93 066/316: Merge pull request #224 from Wilfred/when-let-docstring, ELPA Syncer, 2021/02/15
- [elpa] externals/dash 0df0ff1 067/316: Merge pull request #222 from zck/partition-before-after,
ELPA Syncer <=
- [elpa] externals/dash dcb0ec1 069/316: Merge pull request #232 from Wilfred/improve_docs_wording, ELPA Syncer, 2021/02/15
- [elpa] externals/dash c026c46 073/316: Merge pull request #240 from basil-conto/239, ELPA Syncer, 2021/02/15
- [elpa] externals/dash bdcaf68 074/316: Merge pull request #236 from Wilfred/robust-docs-generation, ELPA Syncer, 2021/02/15
- [elpa] externals/dash 3493fc9 076/316: Merge pull request #242 from magnars/fix-infinite-loop-zip-interleave, ELPA Syncer, 2021/02/15
- [elpa] externals/dash 057e55c 081/316: Update examples.el, remove duplicate -third-item, ELPA Syncer, 2021/02/15
- [elpa] externals/dash 4b46527 080/316: Merge pull request #238 from Wilfred/more-item-accesses, ELPA Syncer, 2021/02/15
- [elpa] externals/dash e7764ea 083/316: Formatting, ELPA Syncer, 2021/02/15
- [elpa] externals/dash f8c8dc0 084/316: Add -tails and -inits, ELPA Syncer, 2021/02/15
- [elpa] externals/dash d8bcf56 086/316: Add -running-sum and -running-product, ELPA Syncer, 2021/02/15
- [elpa] externals/dash 72b8d39 096/316: Add -common-prefix, ELPA Syncer, 2021/02/15