Bläddra i källkod

Observable.ignoreElements;

bjorn 9 år sedan
förälder
incheckning
00ac8afd6e
6 ändrade filer med 53 tillägg och 0 borttagningar
  1. 7 0
      doc/README.md
  2. 17 0
      rx.lua
  3. 18 0
      src/operators/ignoreElements.lua
  4. 9 0
      tests/ignoreElements.lua
  5. 1 0
      tests/observable.lua
  6. 1 0
      tools/concat.lua

+ 7 - 0
doc/README.md

@@ -41,6 +41,7 @@ RxLua
   - [flatMap](#flatmapcallback)
   - [flatMapLatest](#flatmaplatestcallback)
   - [flatten](#flatten)
+  - [ignoreElements](#ignoreelements)
   - [last](#last)
   - [map](#mapcallback)
   - [max](#max)
@@ -437,6 +438,12 @@ Returns a new Observable that subscribes to the Observables produced by the orig
 
 ---
 
+#### `:ignoreElements()`
+
+Returns an Observable that terminates when the source terminates but does not produce any elements.
+
+---
+
 #### `:last()`
 
 Returns a new Observable that only produces the last result of the original.

+ 17 - 0
rx.lua

@@ -822,6 +822,23 @@ function Observable:flatten()
   end)
 end
 
+--- Returns an Observable that terminates when the source terminates but does not produce any
+-- elements.
+-- @returns {Observable}
+function Observable:ignoreElements()
+  return Observable.create(function(observer)
+    local function onError(message)
+      return observer:onError(message)
+    end
+
+    local function onCompleted()
+      return observer:onCompleted()
+    end
+
+    return self:subscribe(nil, onError, onCompleted)
+  end)
+end
+
 --- Returns a new Observable that only produces the last result of the original.
 -- @returns {Observable}
 function Observable:last()

+ 18 - 0
src/operators/ignoreElements.lua

@@ -0,0 +1,18 @@
+local Observable = require 'observable'
+
+--- Returns an Observable that terminates when the source terminates but does not produce any
+-- elements.
+-- @returns {Observable}
+function Observable:ignoreElements()
+  return Observable.create(function(observer)
+    local function onError(message)
+      return observer:onError(message)
+    end
+
+    local function onCompleted()
+      return observer:onCompleted()
+    end
+
+    return self:subscribe(nil, onError, onCompleted)
+  end)
+end

+ 9 - 0
tests/ignoreElements.lua

@@ -0,0 +1,9 @@
+describe('ignoreErrors', function()
+  it('passes through errors from the source', function()
+    expect(Rx.Observable.throw():ignoreElements().subscribe).to.fail()
+  end)
+
+  it('does not produce any values produced by the source', function()
+    expect(Rx.Observable.fromRange(3):ignoreElements()).to.produce.nothing()
+  end)
+end)

+ 1 - 0
tests/observable.lua

@@ -233,6 +233,7 @@ describe('Observable', function()
   dofile('tests/flatMap.lua')
   dofile('tests/flatMapLatest.lua')
   dofile('tests/flatten.lua')
+  dofile('tests/ignoreElements.lua')
   dofile('tests/last.lua')
   dofile('tests/map.lua')
   dofile('tests/max.lua')

+ 1 - 0
tools/concat.lua

@@ -26,6 +26,7 @@ local files = {
   'src/operators/flatMap.lua',
   'src/operators/flatMapLatest.lua',
   'src/operators/flatten.lua',
+  'src/operators/ignoreElements.lua',
   'src/operators/last.lua',
   'src/operators/map.lua',
   'src/operators/max.lua',