[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/dash b44140a 288/439: Add -is-prefix/suffix/infix-p
From: |
Phillip Lord |
Subject: |
[elpa] externals/dash b44140a 288/439: Add -is-prefix/suffix/infix-p |
Date: |
Tue, 04 Aug 2015 20:29:15 +0000 |
branch: externals/dash
commit b44140accde3cd6815558288a351190ee7c5ba6f
Author: Matus Goljer <address@hidden>
Commit: Matus Goljer <address@hidden>
Add -is-prefix/suffix/infix-p
---
README.md | 35 +++++++++++++++++++++++++++++++++++
dash.el | 30 ++++++++++++++++++++++++++++++
dev/examples.el | 21 ++++++++++++++++++++-
3 files changed, 85 insertions(+), 1 deletions(-)
diff --git a/README.md b/README.md
index f52d46d..546c867 100644
--- a/README.md
+++ b/README.md
@@ -80,6 +80,9 @@ Include this in your emacs settings to get syntax
highlighting:
* [-only-some?](#-only-some-pred-list) `(pred list)`
* [-contains?](#-contains-list-element) `(list element)`
* [-same-items?](#-same-items-list-list2) `(list list2)`
+* [-is-prefix-p](#-is-prefix-p-prefix-list) `(prefix list)`
+* [-is-suffix-p](#-is-suffix-p-suffix-list) `(suffix list)`
+* [-is-infix-p](#-is-infix-p-infix-list) `(infix list)`
### Partitioning
@@ -635,6 +638,38 @@ The order of the elements in the lists does not matter.
(-same-items? '(1 2 3) '(1 2 3 4)) ;; => nil
```
+#### -is-prefix-p `(prefix list)`
+
+Return non-nil if `prefix` is prefix of `list`.
+
+```cl
+(-is-prefix-p '(1 2 3) '(1 2 3 4 5)) ;; => t
+(-is-prefix-p '(1 2 3 4 5) '(1 2 3)) ;; => nil
+(-is-prefix-p '(1 3) '(1 2 3 4 5)) ;; => nil
+```
+
+#### -is-suffix-p `(suffix list)`
+
+Return non-nil if `suffix` is suffix of `list`.
+
+```cl
+(-is-suffix-p '(3 4 5) '(1 2 3 4 5)) ;; => t
+(-is-suffix-p '(1 2 3 4 5) '(3 4 5)) ;; => nil
+(-is-suffix-p '(3 5) '(1 2 3 4 5)) ;; => nil
+```
+
+#### -is-infix-p `(infix list)`
+
+Return non-nil if `infix` is infix of `list`.
+
+This operation runs in `o`(n^2) time
+
+```cl
+(-is-infix-p '(1 2 3) '(1 2 3 4 5)) ;; => t
+(-is-infix-p '(2 3 4) '(1 2 3 4 5)) ;; => t
+(-is-infix-p '(3 4 5) '(1 2 3 4 5)) ;; => t
+```
+
## Partitioning
diff --git a/dash.el b/dash.el
index 4d4ef4e..0022076 100644
--- a/dash.el
+++ b/dash.el
@@ -1016,6 +1016,30 @@ The order of the elements in the lists does not matter."
(defalias '-same-items-p '-same-items?)
+(defun -is-prefix-p (prefix list)
+ "Return non-nil if PREFIX is prefix of LIST."
+ (--each-while list (equal (car prefix) it)
+ (!cdr prefix))
+ (not prefix))
+
+(defun -is-suffix-p (suffix list)
+ "Return non-nil if SUFFIX is suffix of LIST."
+ (-is-prefix-p (nreverse suffix) (nreverse list)))
+
+(defun -is-infix-p (infix list)
+ "Return non-nil if INFIX is infix of LIST.
+
+This operation runs in O(n^2) time"
+ (let (done)
+ (while (and (not done) list)
+ (setq done (-is-prefix-p infix list))
+ (!cdr list))
+ done))
+
+(defalias '-is-prefix? '-is-prefix-p)
+(defalias '-is-suffix? '-is-suffix-p)
+(defalias '-is-infix? '-is-infix-p)
+
(defun -sort (comparator list)
"Sort LIST, stably, comparing elements using COMPARATOR.
Returns the sorted list. LIST is NOT modified by side effects.
@@ -1355,6 +1379,12 @@ structure such as plist or alist."
"-contains-p"
"-same-items?"
"-same-items-p"
+ "-is-prefix-p"
+ "-is-prefix?"
+ "-is-suffix-p"
+ "-is-suffix?"
+ "-is-infix-p"
+ "-is-infix?"
"-sort"
"--sort"
"-list"
diff --git a/dev/examples.el b/dev/examples.el
index c0ae5bf..4568f60 100644
--- a/dev/examples.el
+++ b/dev/examples.el
@@ -233,7 +233,26 @@
(-same-items? '(1 2 3) '(3 2 1)) => t
(-same-items? '(1 2 3) '(1 2 3 4)) => nil
(-same-items? '((a . 1) (b . 2)) '((a . 1) (b . 2))) => t
- (-same-items? '(1 2 3) '(2 3 1)) => t))
+ (-same-items? '(1 2 3) '(2 3 1)) => t)
+
+ (defexamples -is-prefix-p
+ (-is-prefix-p '(1 2 3) '(1 2 3 4 5)) => t
+ (-is-prefix-p '(1 2 3 4 5) '(1 2 3)) => nil
+ (-is-prefix-p '(1 3) '(1 2 3 4 5)) => nil
+ (-is-prefix-p '(1 2 3) '(1 2 4 5)) => nil)
+
+ (defexamples -is-suffix-p
+ (-is-suffix-p '(3 4 5) '(1 2 3 4 5)) => t
+ (-is-suffix-p '(1 2 3 4 5) '(3 4 5)) => nil
+ (-is-suffix-p '(3 5) '(1 2 3 4 5)) => nil
+ (-is-suffix-p '(3 4 5) '(1 2 3 5)) => nil)
+
+ (defexamples -is-infix-p
+ (-is-infix-p '(1 2 3) '(1 2 3 4 5)) => t
+ (-is-infix-p '(2 3 4) '(1 2 3 4 5)) => t
+ (-is-infix-p '(3 4 5) '(1 2 3 4 5)) => t
+ (-is-infix-p '(2 3 4) '(1 2 4 5)) => nil
+ (-is-infix-p '(2 4) '(1 2 3 4 5)) => nil))
(def-example-group "Partitioning" nil
(defexamples -split-at
- [elpa] externals/dash e6cae0b 279/439: Merge pull request #68 from rejeep/list-function, (continued)
- [elpa] externals/dash e6cae0b 279/439: Merge pull request #68 from rejeep/list-function, Phillip Lord, 2015/08/04
- [elpa] externals/dash 3eb91fe 280/439: Add `-find-last-index`, Phillip Lord, 2015/08/04
- [elpa] externals/dash 7eb8307 283/439: Merge pull request #71 from Fuco1/find-last-index, Phillip Lord, 2015/08/04
- [elpa] externals/dash 79c23bb 282/439: Merge pull request #70 from Fuco1/debug-decl, Phillip Lord, 2015/08/04
- [elpa] externals/dash b201f0c 281/439: Add debug declarations and move indent declarations into `declare`, Phillip Lord, 2015/08/04
- [elpa] externals/dash 38cd4d2 284/439: Fix fontification when there are dashes, Phillip Lord, 2015/08/04
- [elpa] externals/dash 4098ea0 285/439: Merge pull request #74 from YoungFrog/dashfontifix, Phillip Lord, 2015/08/04
- [elpa] externals/dash b075846 287/439: Add -iterate, -unfold, Phillip Lord, 2015/08/04
- [elpa] externals/dash f96196a 289/439: Merge pull request #75 from Fuco1/prefix, Phillip Lord, 2015/08/04
- [elpa] externals/dash 6bdcfa5 286/439: Add -split-on, -split-when, Phillip Lord, 2015/08/04
- [elpa] externals/dash b44140a 288/439: Add -is-prefix/suffix/infix-p,
Phillip Lord <=
- [elpa] externals/dash abff641 290/439: Merge pull request #76 from Fuco1/unfold, Phillip Lord, 2015/08/04
- [elpa] externals/dash 8dfa9b6 292/439: Release 2.6.0, Phillip Lord, 2015/08/04
- [elpa] externals/dash f5264db 291/439: Merge pull request #77 from Fuco1/split-when, Phillip Lord, 2015/08/04
- [elpa] externals/dash 5086d24 293/439: Merge pull request #60 from rejeep/cask, Phillip Lord, 2015/08/04
- [elpa] externals/dash 43dcd37 295/439: Only eval NUM in --dotimes once, Phillip Lord, 2015/08/04
- [elpa] externals/dash 4e6a965 294/439: Still better debug declarations, Phillip Lord, 2015/08/04
- [elpa] externals/dash 703bb59 297/439: Convert -zip to support variable-length arguments, Phillip Lord, 2015/08/04
- [elpa] externals/dash 4ecfea6 296/439: Merge pull request #79 from Fuco1/debug-forms, Phillip Lord, 2015/08/04
- [elpa] externals/dash c08fcba 299/439: Fixed documentation of `-last-item'., Phillip Lord, 2015/08/04
- [elpa] externals/dash c952a54 300/439: Merge pull request #90 from tmalsburg/last-item-doc, Phillip Lord, 2015/08/04