Browse Source

Add Observable:reject;

bjorn 10 years ago
parent
commit
14264fcb00
2 changed files with 41 additions and 0 deletions
  1. 15 0
      doc/README.md
  2. 26 0
      rx.lua

+ 15 - 0
doc/README.md

@@ -27,6 +27,7 @@
   - [pack](#pack)
   - [pack](#pack)
   - [pluck](#pluckkey)
   - [pluck](#pluckkey)
   - [reduce](#reduceaccumulator-seed)
   - [reduce](#reduceaccumulator-seed)
+  - [reject](#rejectpredicate)
   - [skip](#skipn)
   - [skip](#skipn)
   - [skipUntil](#skipuntilother)
   - [skipUntil](#skipuntilother)
   - [sum](#sum)
   - [sum](#sum)
@@ -385,6 +386,20 @@ Returns:
 
 
 ---
 ---
 
 
+#### `:reject(predicate)`
+
+Returns a new Observable that produces values from the original which do not satisfy a predicate.
+
+Arguments:
+
+- `predicate` (`function`) - The predicate used to reject values.
+
+Returns:
+
+- `Observable`
+
+---
+
 #### `:skip(n)`
 #### `:skip(n)`
 
 
 Returns a new Observable that skips over a specified number of values produced by the original and produces the rest.
 Returns a new Observable that skips over a specified number of values produced by the original and produces the rest.

+ 26 - 0
rx.lua

@@ -503,6 +503,32 @@ function Observable:reduce(accumulator, seed)
   end)
   end)
 end
 end
 
 
+--- Returns a new Observable that produces values from the original which do not satisfy a
+-- predicate.
+-- @arg {function} predicate - The predicate used to reject values.
+-- @returns {Observable}
+function Observable:reject(predicate)
+  predicate = predicate or identity
+
+  return Observable.create(function(observer)
+    local function onNext(...)
+      if not predicate(...) then
+        return observer:onNext(...)
+      end
+    end
+
+    local function onError(e)
+      return observer:onError(e)
+    end
+
+    local function onComplete()
+      return observer:onComplete(e)
+    end
+
+    return self:subscribe(onNext, onError, onComplete)
+  end)
+end
+
 --- Returns a new Observable that skips over a specified number of values produced by the original
 --- Returns a new Observable that skips over a specified number of values produced by the original
 -- and produces the rest.
 -- and produces the rest.
 -- @arg {number=1} n - The number of values to ignore.
 -- @arg {number=1} n - The number of values to ignore.