add helper pred navs for common comparisons

This commit is contained in:
nathanmarz 2017-04-24 20:35:41 -04:00
parent af17c4617e
commit 5dea8919be
4 changed files with 21 additions and 1 deletions

View file

@ -1,3 +1,7 @@
## 1.0.2-SNAPSHOT
* Added `pred=`, `pred<`, `pred>`, `pred<=`, `pred>=` for filtering using common comparisons
## 1.0.1 ## 1.0.1
* `subselect`/`filterer` can remove entries in source by transforming to a smaller sequence * `subselect`/`filterer` can remove entries in source by transforming to a smaller sequence

View file

@ -192,7 +192,7 @@ user> (transform [(srange 4 11) (filterer even?)]
Append [:c :d] to every subsequence that has at least two even numbers: Append [:c :d] to every subsequence that has at least two even numbers:
```clojure ```clojure
user> (setval [ALL user> (setval [ALL
(selected? (filterer even?) (view count) #(>= % 2)) (selected? (filterer even?) (view count) (pred>= 2))
END] END]
[:c :d] [:c :d]
[[1 2 3 4 5 6] [7 0 -1] [8 8] []]) [[1 2 3 4 5 6] [7 0 -1] [8 8] []])

View file

@ -996,6 +996,13 @@
pred pred
i/pred*) i/pred*)
(defn ^:direct-nav pred= [v] (pred #(= % v)))
(defn ^:direct-nav pred< [v] (pred #(< % v)))
(defn ^:direct-nav pred> [v] (pred #(> % v)))
(defn ^:direct-nav pred<= [v] (pred #(<= % v)))
(defn ^:direct-nav pred>= [v] (pred #(>= % v)))
(extend-type nil (extend-type nil
ImplicitNav ImplicitNav
(implicit-nav [this] STAY)) (implicit-nav [this] STAY))

View file

@ -1518,6 +1518,15 @@
(is (= [1 :a 3 5] (setval (s/filterer even?) [:a] [1 2 3 4 5]))) (is (= [1 :a 3 5] (setval (s/filterer even?) [:a] [1 2 3 4 5])))
) )
(deftest helper-preds-test
(let [data [1 2 2 3 4 0]]
(is (= [2 2] (select [s/ALL (s/pred= 2)] data)))
(is (= [1 2 2 0] (select [s/ALL (s/pred< 3)] data)))
(is (= [1 2 2 3 0] (select [s/ALL (s/pred<= 3)] data)))
(is (= [4] (select [s/ALL (s/pred> 3)] data)))
(is (= [3 4] (select [s/ALL (s/pred>= 3)] data)))
))
#?(:clj #?(:clj
(do (do
(defprotocolpath FooPP) (defprotocolpath FooPP)