aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/ltn12.lua13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/ltn12.lua b/src/ltn12.lua
index 5b10f56..1014de2 100644
--- a/src/ltn12.lua
+++ b/src/ltn12.lua
@@ -139,7 +139,9 @@ function source.rewind(src)
139 end 139 end
140end 140end
141 141
142function source.chain(src, f) 142-- chains a source with one or several filter(s)
143function source.chain(src, f, ...)
144 if ... then f=filter.chain(f, ...) end
143 base.assert(src and f) 145 base.assert(src and f)
144 local last_in, last_out = "", "" 146 local last_in, last_out = "", ""
145 local state = "feeding" 147 local state = "feeding"
@@ -254,8 +256,13 @@ function sink.error(err)
254 end 256 end
255end 257end
256 258
257-- chains a sink with a filter 259-- chains a sink with one or several filter(s)
258function sink.chain(f, snk) 260function sink.chain(f, snk, ...)
261 if ... then
262 local args = { f, snk, ... }
263 snk = table.remove(args, #args)
264 f = filter.chain(unpack(args))
265 end
259 base.assert(f and snk) 266 base.assert(f and snk)
260 return function(chunk, err) 267 return function(chunk, err)
261 if chunk ~= "" then 268 if chunk ~= "" then