diff options
| author | Diego Nehab <diego@tecgraf.puc-rio.br> | 2004-03-22 04:15:03 +0000 |
|---|---|---|
| committer | Diego Nehab <diego@tecgraf.puc-rio.br> | 2004-03-22 04:15:03 +0000 |
| commit | 1fa65d89ca5dc64756f7933d7cc3f524e4627dce (patch) | |
| tree | df614c8b86b0f7c2f45c2afcacc993ab3c0dcf11 /src/ltn12.lua | |
| parent | 4919a83d2271a9e43b83c7d488e3f94c850681e3 (diff) | |
| download | luasocket-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.lua | 13 |
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 |
| 24 | function filter.cycle(low, ctx, extra) | 24 | function 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 |
| 33 | local function chain2(f1, f2) | 34 | local 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 | |||
| 40 | function filter.chain(...) | 43 | function 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 |
| 76 | function source.simplify(src) | 80 | function 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 |
| 99 | function source.rewind(src) | 104 | function 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 |
| 113 | function source.chain(src, f) | 119 | function 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 |
| 159 | function sink.simplify(snk) | 167 | function 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 |
| 197 | function sink.chain(f, snk) | 206 | function 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 |
| 211 | function pump(src, snk) | 222 | function 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) |
