support for intermediate filters in ltn12.pump.all
This commit is contained in:
parent
480a818bf0
commit
fbfd8ee680
2 changed files with 13 additions and 2 deletions
|
@ -283,14 +283,17 @@ end
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
-- pumps one chunk from the source to the sink
|
-- pumps one chunk from the source to the sink
|
||||||
function pump.step(src, snk)
|
function pump.step(src, snk)
|
||||||
|
if ... then snk = ltn12.sink.chain(snk, ...) end
|
||||||
local chunk, src_err = src()
|
local chunk, src_err = src()
|
||||||
local ret, snk_err = snk(chunk, src_err)
|
local ret, snk_err = snk(chunk, src_err)
|
||||||
if chunk and ret then return 1
|
if chunk and ret then return 1
|
||||||
else return nil, src_err or snk_err end
|
else return nil, src_err or snk_err end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- pumps all data from a source to a sink, using a step function
|
-- pumps all data from a source to a sink, optionally going through
|
||||||
function pump.all(src, snk, step)
|
-- intermediate filters
|
||||||
|
function pump.all(src, snk, ...)
|
||||||
|
if ... then snk = ltn12.sink.chain(snk, ...) end
|
||||||
base.assert(src and snk)
|
base.assert(src and snk)
|
||||||
step = step or pump.step
|
step = step or pump.step
|
||||||
while true do
|
while true do
|
||||||
|
|
|
@ -229,6 +229,14 @@ assert(ltn12.pump.all(source, sink), "returned error")
|
||||||
assert(table.concat(t) == double(double(double(s))), "mismatch")
|
assert(table.concat(t) == double(double(double(s))), "mismatch")
|
||||||
print("ok")
|
print("ok")
|
||||||
|
|
||||||
|
--------------------------------
|
||||||
|
io.write("testing pump.all (with intermediate filters): ")
|
||||||
|
local source = ltn12.source.string(s)
|
||||||
|
sink, t = ltn12.sink.table()
|
||||||
|
assert(ltn12.pump.all(source, double, double, sink), "returned error")
|
||||||
|
assert(table.concat(t) == double(double(s)), "mismatch")
|
||||||
|
print("ok")
|
||||||
|
|
||||||
--------------------------------
|
--------------------------------
|
||||||
io.write("testing filter.chain (and sink.chain, with split, merge): ")
|
io.write("testing filter.chain (and sink.chain, with split, merge): ")
|
||||||
source = ltn12.source.string(s)
|
source = ltn12.source.string(s)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue