Kaynağa Gözat

Observable.wrap -> Observable.buffer; Aliases;

bjorn 9 yıl önce
ebeveyn
işleme
16188de54d
7 değiştirilmiş dosya ile 100 ekleme ve 94 silme
  1. 11 11
      doc/README.md
  2. 40 38
      rx.lua
  3. 3 0
      src/aliases.lua
  4. 38 38
      src/observable.lua
  5. 5 5
      tests/buffer.lua
  6. 1 1
      tests/observable.lua
  7. 2 1
      tools/concat.lua

+ 11 - 11
doc/README.md

@@ -23,6 +23,7 @@ RxLua
   - [all](#allpredicate)
   - [amb](#ambobservables)
   - [average](#average)
+  - [buffer](#buffersize)
   - [combineLatest](#combinelatestobservables-combinator)
   - [compact](#compact)
   - [concat](#concatsources)
@@ -54,7 +55,6 @@ RxLua
   - [unwrap](#unwrap)
   - [window](#windowsize)
   - [with](#withsources)
-  - [wrap](#wrapsize)
 - [ImmediateScheduler](#immediatescheduler)
   - [create](#create)
   - [schedule](#scheduleaction)
@@ -264,6 +264,16 @@ Returns an Observable that produces the average of all values produced by the or
 
 ---
 
+#### `:buffer(size)`
+
+Returns an Observable that buffers values from the original and produces them as multiple values.
+
+| Name | Type | Default | Description |
+|------|------|---------|-------------|
+| `size` | number |  | The size of the buffer. |
+
+---
+
 #### `:combineLatest(observables, combinator)`
 
 Returns a new Observable that runs a combinator function on the most recent values from a set of Observables whenever any of them produce a new value. The results of the combinator function are produced by the new Observable.
@@ -536,16 +546,6 @@ Returns an Observable that produces values from the original along with the most
 |------|------|---------|-------------|
 | `sources` | Observable... |  | The Observables to include the most recent values from. |
 
----
-
-#### `:wrap(size)`
-
-Returns an Observable that buffers values from the original and produces them as multiple values.
-
-| Name | Type | Default | Description |
-|------|------|---------|-------------|
-| `size` | number |  | The size of the buffer. |
-
 # ImmediateScheduler
 
 Schedules Observables by running all operations immediately.

+ 40 - 38
rx.lua

@@ -323,6 +323,44 @@ function Observable:average()
   end)
 end
 
+--- Returns an Observable that buffers values from the original and produces them as multiple
+-- values.
+-- @arg {number} size - The size of the buffer.
+function Observable:buffer(size)
+  return Observable.create(function(observer)
+    local buffer = {}
+
+    local function emit()
+      if #buffer > 0 then
+        observer:onNext(util.unpack(buffer))
+        buffer = {}
+      end
+    end
+
+    local function onNext(...)
+      local values = {...}
+      for i = 1, #values do
+        table.insert(buffer, values[i])
+        if #buffer >= size then
+          emit()
+        end
+      end
+    end
+
+    local function onError(message)
+      emit()
+      return observer:onError(message)
+    end
+
+    local function onCompleted()
+      emit()
+      return observer:onCompleted()
+    end
+
+    return self:subscribe(onNext, onError, onCompleted)
+  end)
+end
+
 --- Returns a new Observable that runs a combinator function on the most recent values from a set
 -- of Observables whenever any of them produce a new value. The results of the combinator function
 -- are produced by the new Observable.
@@ -1089,44 +1127,6 @@ function Observable:with(...)
   end)
 end
 
---- Returns an Observable that buffers values from the original and produces them as multiple
--- values.
--- @arg {number} size - The size of the buffer.
-function Observable:wrap(size)
-  return Observable.create(function(observer)
-    local buffer = {}
-
-    local function emit()
-      if #buffer > 0 then
-        observer:onNext(util.unpack(buffer))
-        buffer = {}
-      end
-    end
-
-    local function onNext(...)
-      local values = {...}
-      for i = 1, #values do
-        table.insert(buffer, values[i])
-        if #buffer >= size then
-          emit()
-        end
-      end
-    end
-
-    local function onError(message)
-      emit()
-      return observer:onError(message)
-    end
-
-    local function onCompleted()
-      emit()
-      return observer:onCompleted()
-    end
-
-    return self:subscribe(onNext, onError, onCompleted)
-  end)
-end
-
 --- @class ImmediateScheduler
 -- @description Schedules Observables by running all operations immediately.
 local ImmediateScheduler = {}
@@ -1352,6 +1352,8 @@ function BehaviorSubject:getValue()
   return self.value and util.unpack(self.value)
 end
 
+Observable.wrap = Observable.buffer
+
 return {
   util = util,
   Subscription = Subscription,

+ 3 - 0
src/aliases.lua

@@ -0,0 +1,3 @@
+local Observable = require 'observable'
+
+Observable.wrap = Observable.buffer

+ 38 - 38
src/observable.lua

@@ -238,6 +238,44 @@ function Observable:average()
   end)
 end
 
+--- Returns an Observable that buffers values from the original and produces them as multiple
+-- values.
+-- @arg {number} size - The size of the buffer.
+function Observable:buffer(size)
+  return Observable.create(function(observer)
+    local buffer = {}
+
+    local function emit()
+      if #buffer > 0 then
+        observer:onNext(util.unpack(buffer))
+        buffer = {}
+      end
+    end
+
+    local function onNext(...)
+      local values = {...}
+      for i = 1, #values do
+        table.insert(buffer, values[i])
+        if #buffer >= size then
+          emit()
+        end
+      end
+    end
+
+    local function onError(message)
+      emit()
+      return observer:onError(message)
+    end
+
+    local function onCompleted()
+      emit()
+      return observer:onCompleted()
+    end
+
+    return self:subscribe(onNext, onError, onCompleted)
+  end)
+end
+
 --- Returns a new Observable that runs a combinator function on the most recent values from a set
 -- of Observables whenever any of them produce a new value. The results of the combinator function
 -- are produced by the new Observable.
@@ -1004,42 +1042,4 @@ function Observable:with(...)
   end)
 end
 
---- Returns an Observable that buffers values from the original and produces them as multiple
--- values.
--- @arg {number} size - The size of the buffer.
-function Observable:wrap(size)
-  return Observable.create(function(observer)
-    local buffer = {}
-
-    local function emit()
-      if #buffer > 0 then
-        observer:onNext(util.unpack(buffer))
-        buffer = {}
-      end
-    end
-
-    local function onNext(...)
-      local values = {...}
-      for i = 1, #values do
-        table.insert(buffer, values[i])
-        if #buffer >= size then
-          emit()
-        end
-      end
-    end
-
-    local function onError(message)
-      emit()
-      return observer:onError(message)
-    end
-
-    local function onCompleted()
-      emit()
-      return observer:onCompleted()
-    end
-
-    return self:subscribe(onNext, onError, onCompleted)
-  end)
-end
-
 return Observable

+ 5 - 5
tests/wrap.lua → tests/buffer.lua

@@ -1,12 +1,12 @@
-describe('wrap', function()
+describe('buffer', function()
   it('produces an error if its parent errors', function()
     local observable = Rx.Observable.fromValue(''):map(function(x) return x() end)
     expect(observable.subscribe).to.fail()
-    expect(observable:wrap().subscribe).to.fail()
+    expect(observable:buffer().subscribe).to.fail()
   end)
 
   it('fails if size is not specified', function()
-    expect(Rx.Observable.fromRange(5):wrap().subscribe).to.fail()
+    expect(Rx.Observable.fromRange(5):buffer().subscribe).to.fail()
   end)
 
   it('produces values wrapped to the specified width', function()
@@ -17,11 +17,11 @@ describe('wrap', function()
       observer:onCompleted()
     end)
     expect(observable).to.produce({{1}, {2, 3}, {4, 5, 6}})
-    expect(observable:wrap(2)).to.produce({{1, 2}, {3, 4}, {5, 6}})
+    expect(observable:buffer(2)).to.produce({{1, 2}, {3, 4}, {5, 6}})
   end)
 
   it('produces a partial buffer if the observable completes', function()
     local observable = Rx.Observable.fromRange(5)
-    expect(observable:wrap(2)).to.produce({{1, 2}, {3, 4}, {5}})
+    expect(observable:buffer(2)).to.produce({{1, 2}, {3, 4}, {5}})
   end)
 end)

+ 1 - 1
tests/observable.lua

@@ -180,6 +180,7 @@ describe('Observable', function()
   dofile('tests/all.lua')
   dofile('tests/amb.lua')
   dofile('tests/average.lua')
+  dofile('tests/buffer.lua')
   dofile('tests/combineLatest.lua')
   dofile('tests/compact.lua')
   dofile('tests/concat.lua')
@@ -210,5 +211,4 @@ describe('Observable', function()
   dofile('tests/unwrap.lua')
   dofile('tests/window.lua')
   dofile('tests/with.lua')
-  dofile('tests/wrap.lua')
 end)

+ 2 - 1
tools/concat.lua

@@ -9,7 +9,8 @@ local files = {
   'src/schedulers/immediatescheduler.lua',
   'src/schedulers/cooperativescheduler.lua',
   'src/subjects/subject.lua',
-  'src/subjects/behaviorsubject.lua'
+  'src/subjects/behaviorsubject.lua',
+  'src/aliases.lua'
 }
 
 local header = [[