Răsfoiți Sursa

Just put it all in one file;

bjorn 10 ani în urmă
părinte
comite
8c2a010e10
3 a modificat fișierele cu 40 adăugiri și 50 ștergeri
  1. 40 4
      rx.lua
  2. 0 8
      rx/init.lua
  3. 0 38
      rx/observer.lua

+ 40 - 4
rx/observable.lua → rx.lua

@@ -1,5 +1,38 @@
-local path = (...):gsub('%.[^%.]+$', '')
-local Observer = require(path .. '.observer')
+local function noop() end
+
+local Observer = {}
+Observer.__index = Observer
+
+function Observer.create(onNext, onError, onCompleted)
+  local self = {
+    _onNext = onNext or noop,
+    _onError = onError or error,
+    _onCompleted = onCompleted or noop,
+    stopped = false
+  }
+
+  return setmetatable(self, Observer)
+end
+
+function Observer:onNext(value)
+  if not self.stopped then
+    self._onNext(value)
+  end
+end
+
+function Observer:onError(e)
+  if not self.stopped then
+    self.stopped = true
+    self._onError(e)
+  end
+end
+
+function Observer:onCompleted()
+  if not self.stopped then
+    self.stopped = true
+    self._onCompleted()
+  end
+end
 
 local Observable = {}
 Observable.__index = Observable
@@ -46,7 +79,6 @@ function Observable:dump(name)
 end
 
 -- Combinators
-
 function Observable:first()
   return Observable.create(function(observer)
     return self:subscribe(function(x)
@@ -62,6 +94,7 @@ function Observable:first()
   end)
 end
 
+
 function Observable:last()
   return Observable.create(function(observer)
     local value
@@ -160,4 +193,7 @@ function Observable:combineLatest(...)
   end)
 end
 
-return Observable
+return {
+  Observer = Observer,
+  Observable = Observable
+}

+ 0 - 8
rx/init.lua

@@ -1,8 +0,0 @@
-local path = (...):gsub('%.init+$', '')
-
-local Rx = {}
-
-Rx.Observable = require(path .. '.observable')
-Rx.Observer = require(path .. '.observer')
-
-return Rx

+ 0 - 38
rx/observer.lua

@@ -1,38 +0,0 @@
-local Observer = {}
-Observer.__index = Observer
-
-local function noop() end
-local function defaultError(e) error(e) end
-
-function Observer.create(onNext, onError, onCompleted)
-  local self = {
-    _onNext = onNext or noop,
-    _onError = onError or defaultError,
-    _onCompleted = onCompleted or noop,
-    stopped = false
-  }
-
-  return setmetatable(self, Observer)
-end
-
-function Observer:onNext(value)
-  if not self.stopped then
-    self._onNext(value)
-  end
-end
-
-function Observer:onError(e)
-  if not self.stopped then
-    self.stopped = true
-    self._onError(e)
-  end
-end
-
-function Observer:onCompleted()
-  if not self.stopped then
-    self.stopped = true
-    self._onCompleted()
-  end
-end
-
-return Observer