aboutsummaryrefslogtreecommitdiff
path: root/src/ltn12.lua
diff options
context:
space:
mode:
authorDiego Nehab <diego@tecgraf.puc-rio.br>2004-03-22 04:15:03 +0000
committerDiego Nehab <diego@tecgraf.puc-rio.br>2004-03-22 04:15:03 +0000
commit1fa65d89ca5dc64756f7933d7cc3f524e4627dce (patch)
treedf614c8b86b0f7c2f45c2afcacc993ab3c0dcf11 /src/ltn12.lua
parent4919a83d2271a9e43b83c7d488e3f94c850681e3 (diff)
downloadluasocket-1fa65d89ca5dc64756f7933d7cc3f524e4627dce.tar.gz
luasocket-1fa65d89ca5dc64756f7933d7cc3f524e4627dce.tar.bz2
luasocket-1fa65d89ca5dc64756f7933d7cc3f524e4627dce.zip
Adjusted some details, got rid of old files, added some new.
Diffstat (limited to 'src/ltn12.lua')
-rw-r--r--src/ltn12.lua13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/ltn12.lua b/src/ltn12.lua
index dc49d80..ed3449b 100644
--- a/src/ltn12.lua
+++ b/src/ltn12.lua
@@ -22,6 +22,7 @@ end
22 22
23-- returns a high level filter that cycles a cycles a low-level filter 23-- returns a high level filter that cycles a cycles a low-level filter
24function filter.cycle(low, ctx, extra) 24function filter.cycle(low, ctx, extra)
25 if type(low) ~= 'function' then error('invalid low-level filter', 2) end
25 return function(chunk) 26 return function(chunk)
26 local ret 27 local ret
27 ret, ctx = low(ctx, chunk, extra) 28 ret, ctx = low(ctx, chunk, extra)
@@ -31,6 +32,8 @@ end
31 32
32-- chains two filters together 33-- chains two filters together
33local function chain2(f1, f2) 34local function chain2(f1, f2)
35 if type(f1) ~= 'function' then error('invalid filter', 2) end
36 if type(f2) ~= 'function' then error('invalid filter', 2) end
34 return function(chunk) 37 return function(chunk)
35 return f2(f1(chunk)) 38 return f2(f1(chunk))
36 end 39 end
@@ -40,6 +43,7 @@ end
40function filter.chain(...) 43function filter.chain(...)
41 local f = arg[1] 44 local f = arg[1]
42 for i = 2, table.getn(arg) do 45 for i = 2, table.getn(arg) do
46 if type(arg[i]) ~= 'function' then error('invalid filter', 2) end
43 f = chain2(f, arg[i]) 47 f = chain2(f, arg[i])
44 end 48 end
45 return f 49 return f
@@ -74,6 +78,7 @@ end
74 78
75-- turns a fancy source into a simple source 79-- turns a fancy source into a simple source
76function source.simplify(src) 80function source.simplify(src)
81 if type(src) ~= 'function' then error('invalid source', 2) end
77 return function() 82 return function()
78 local chunk, err_or_new = src() 83 local chunk, err_or_new = src()
79 src = err_or_new or src 84 src = err_or_new or src
@@ -97,6 +102,7 @@ end
97 102
98-- creates rewindable source 103-- creates rewindable source
99function source.rewind(src) 104function source.rewind(src)
105 if type(src) ~= 'function' then error('invalid source', 2) end
100 local t = {} 106 local t = {}
101 return function(chunk) 107 return function(chunk)
102 if not chunk then 108 if not chunk then
@@ -111,6 +117,8 @@ end
111 117
112-- chains a source with a filter 118-- chains a source with a filter
113function source.chain(src, f) 119function source.chain(src, f)
120 if type(src) ~= 'function' then error('invalid source', 2) end
121 if type(f) ~= 'function' then error('invalid filter', 2) end
114 local co = coroutine.create(function() 122 local co = coroutine.create(function()
115 while true do 123 while true do
116 local chunk, err = src() 124 local chunk, err = src()
@@ -157,6 +165,7 @@ end
157 165
158-- turns a fancy sink into a simple sink 166-- turns a fancy sink into a simple sink
159function sink.simplify(snk) 167function sink.simplify(snk)
168 if type(snk) ~= 'function' then error('invalid sink', 2) end
160 return function(chunk, err) 169 return function(chunk, err)
161 local ret, err_or_new = snk(chunk, err) 170 local ret, err_or_new = snk(chunk, err)
162 if not ret then return nil, err_or_new end 171 if not ret then return nil, err_or_new end
@@ -195,6 +204,8 @@ end
195 204
196-- chains a sink with a filter 205-- chains a sink with a filter
197function sink.chain(f, snk) 206function sink.chain(f, snk)
207 if type(snk) ~= 'function' then error('invalid sink', 2) end
208 if type(f) ~= 'function' then error('invalid filter', 2) end
198 return function(chunk, err) 209 return function(chunk, err)
199 local filtered = f(chunk) 210 local filtered = f(chunk)
200 local done = chunk and "" 211 local done = chunk and ""
@@ -209,6 +220,8 @@ end
209 220
210-- pumps all data from a source to a sink 221-- pumps all data from a source to a sink
211function pump(src, snk) 222function pump(src, snk)
223 if type(src) ~= 'function' then error('invalid source', 2) end
224 if type(snk) ~= 'function' then error('invalid sink', 2) end
212 while true do 225 while true do
213 local chunk, src_err = src() 226 local chunk, src_err = src()
214 local ret, snk_err = snk(chunk, src_err) 227 local ret, snk_err = snk(chunk, src_err)