Merge pull request #10 from Lorel/master

Observable.fromFileByLine;
This commit is contained in:
Bjorn Swenson 2016-10-13 07:52:05 -07:00 committed by GitHub
commit 0b08888467
3 changed files with 51 additions and 1 deletions

View File

@ -19,6 +19,7 @@ RxLua
- [fromRange](#fromrangeinitial-limit-step) - [fromRange](#fromrangeinitial-limit-step)
- [fromTable](#fromtabletable-iterator-keys) - [fromTable](#fromtabletable-iterator-keys)
- [fromCoroutine](#fromcoroutinecoroutine) - [fromCoroutine](#fromcoroutinecoroutine)
- [fromFileByLine](#fromfilebylinefilename)
- [defer](#deferfactory) - [defer](#deferfactory)
- [replicate](#replicatevalue-count) - [replicate](#replicatevalue-count)
- [dump](#dumpname-formatter) - [dump](#dumpname-formatter)
@ -259,6 +260,16 @@ Creates an Observable that produces values when the specified coroutine yields.
--- ---
#### `.fromFileByLine(filename)`
Creates an Observable that produces values from a file, line by line.
| Name | Type | Default | Description |
|------|------|---------|-------------|
| `filename` | string | | The name of the file used to create the Observable |
---
#### `.defer(factory)` #### `.defer(factory)`
Creates an Observable that creates a new Observable for each observer using a factory function. Creates an Observable that creates a new Observable for each observer using a factory function.
@ -1014,4 +1025,3 @@ Pushes zero or more values to the ReplaySubject. They will be broadcasted to all
| Name | Type | Default | Description | | Name | Type | Default | Description |
|------|------|---------|-------------| |------|------|---------|-------------|
| `values` | *... | | | | `values` | *... | | |

20
rx.lua
View File

@ -260,6 +260,26 @@ function Observable:dump(name, formatter)
return self:subscribe(onNext, onError, onCompleted) return self:subscribe(onNext, onError, onCompleted)
end end
--- Creates an Observable that produces values from a file, line by line.
-- @arg {string} filename - The name of the file used to create the Observable
-- @returns {Observable}
function Observable.fromFileByLine(filename)
return Observable.create(function(observer)
local f = io.open(filename, 'r')
if f
then
f:close()
for line in io.lines(filename) do
observer:onNext(line)
end
return observer:onCompleted()
else
return observer:onError(filename)
end
end)
end
--- Determine whether all items emitted by an Observable meet some criteria. --- Determine whether all items emitted by an Observable meet some criteria.
-- @arg {function=identity} predicate - The predicate used to evaluate objects. -- @arg {function=identity} predicate - The predicate used to evaluate objects.
function Observable:all(predicate) function Observable:all(predicate)

View File

@ -165,4 +165,24 @@ function Observable:dump(name, formatter)
return self:subscribe(onNext, onError, onCompleted) return self:subscribe(onNext, onError, onCompleted)
end end
--- Creates an Observable that produces values from a file, line by line.
-- @arg {string} filename - The name of the file used to create the Observable
-- @returns {Observable}
function Observable.fromFileByLine(filename)
return Observable.create(function(observer)
local f = io.open(filename, 'r')
if f
then
f:close()
for line in io.lines(filename) do
observer:onNext(line)
end
return observer:onCompleted()
else
return observer:onError(filename)
end
end)
end
return Observable return Observable