diff options
author | Diego Nehab <diego@tecgraf.puc-rio.br> | 2004-11-27 07:58:04 +0000 |
---|---|---|
committer | Diego Nehab <diego@tecgraf.puc-rio.br> | 2004-11-27 07:58:04 +0000 |
commit | 7c97e8e40aaa665226fb54449773dc3134e755b2 (patch) | |
tree | 47888d4c924fc24bf3b355bf58120ea3cdc74bc4 /src/ltn12.lua | |
parent | eb0fc857ddea6f084d338589e2a33d3e7d4eade6 (diff) | |
download | luasocket-7c97e8e40aaa665226fb54449773dc3134e755b2.tar.gz luasocket-7c97e8e40aaa665226fb54449773dc3134e755b2.tar.bz2 luasocket-7c97e8e40aaa665226fb54449773dc3134e755b2.zip |
Almost ready for beta3
Diffstat (limited to 'src/ltn12.lua')
-rw-r--r-- | src/ltn12.lua | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/ltn12.lua b/src/ltn12.lua index ed39ec8..43c2755 100644 --- a/src/ltn12.lua +++ b/src/ltn12.lua | |||
@@ -8,7 +8,11 @@ | |||
8 | ----------------------------------------------------------------------------- | 8 | ----------------------------------------------------------------------------- |
9 | -- Declare module | 9 | -- Declare module |
10 | ----------------------------------------------------------------------------- | 10 | ----------------------------------------------------------------------------- |
11 | module("ltn12") | 11 | local string = require("string") |
12 | local table = require("table") | ||
13 | local base = require("base") | ||
14 | local coroutine = require("coroutine") | ||
15 | local ltn12 = module("ltn12") | ||
12 | 16 | ||
13 | filter = {} | 17 | filter = {} |
14 | source = {} | 18 | source = {} |
@@ -23,7 +27,7 @@ BLOCKSIZE = 2048 | |||
23 | ----------------------------------------------------------------------------- | 27 | ----------------------------------------------------------------------------- |
24 | -- returns a high level filter that cycles a low-level filter | 28 | -- returns a high level filter that cycles a low-level filter |
25 | function filter.cycle(low, ctx, extra) | 29 | function filter.cycle(low, ctx, extra) |
26 | assert(low) | 30 | base.assert(low) |
27 | return function(chunk) | 31 | return function(chunk) |
28 | local ret | 32 | local ret |
29 | ret, ctx = low(ctx, chunk, extra) | 33 | ret, ctx = low(ctx, chunk, extra) |
@@ -121,7 +125,7 @@ end | |||
121 | 125 | ||
122 | -- turns a fancy source into a simple source | 126 | -- turns a fancy source into a simple source |
123 | function source.simplify(src) | 127 | function source.simplify(src) |
124 | assert(src) | 128 | base.assert(src) |
125 | return function() | 129 | return function() |
126 | local chunk, err_or_new = src() | 130 | local chunk, err_or_new = src() |
127 | src = err_or_new or src | 131 | src = err_or_new or src |
@@ -145,7 +149,7 @@ end | |||
145 | 149 | ||
146 | -- creates rewindable source | 150 | -- creates rewindable source |
147 | function source.rewind(src) | 151 | function source.rewind(src) |
148 | assert(src) | 152 | base.assert(src) |
149 | local t = {} | 153 | local t = {} |
150 | return function(chunk) | 154 | return function(chunk) |
151 | if not chunk then | 155 | if not chunk then |
@@ -160,7 +164,7 @@ end | |||
160 | 164 | ||
161 | -- chains a source with a filter | 165 | -- chains a source with a filter |
162 | function source.chain(src, f) | 166 | function source.chain(src, f) |
163 | assert(src and f) | 167 | base.assert(src and f) |
164 | local co = coroutine.create(function() | 168 | local co = coroutine.create(function() |
165 | while true do | 169 | while true do |
166 | local chunk, err = src() | 170 | local chunk, err = src() |
@@ -215,7 +219,7 @@ end | |||
215 | 219 | ||
216 | -- turns a fancy sink into a simple sink | 220 | -- turns a fancy sink into a simple sink |
217 | function sink.simplify(snk) | 221 | function sink.simplify(snk) |
218 | assert(snk) | 222 | base.assert(snk) |
219 | return function(chunk, err) | 223 | return function(chunk, err) |
220 | local ret, err_or_new = snk(chunk, err) | 224 | local ret, err_or_new = snk(chunk, err) |
221 | if not ret then return nil, err_or_new end | 225 | if not ret then return nil, err_or_new end |
@@ -254,7 +258,7 @@ end | |||
254 | 258 | ||
255 | -- chains a sink with a filter | 259 | -- chains a sink with a filter |
256 | function sink.chain(f, snk) | 260 | function sink.chain(f, snk) |
257 | assert(f and snk) | 261 | base.assert(f and snk) |
258 | return function(chunk, err) | 262 | return function(chunk, err) |
259 | local filtered = f(chunk) | 263 | local filtered = f(chunk) |
260 | local done = chunk and "" | 264 | local done = chunk and "" |
@@ -279,10 +283,12 @@ end | |||
279 | 283 | ||
280 | -- pumps all data from a source to a sink, using a step function | 284 | -- pumps all data from a source to a sink, using a step function |
281 | function pump.all(src, snk, step) | 285 | function pump.all(src, snk, step) |
282 | assert(src and snk) | 286 | base.assert(src and snk) |
283 | step = step or pump.step | 287 | step = step or pump.step |
284 | while true do | 288 | while true do |
285 | local ret, err = step(src, snk) | 289 | local ret, err = step(src, snk) |
286 | if not ret then return not err, err end | 290 | if not ret then return not err, err end |
287 | end | 291 | end |
288 | end | 292 | end |
293 | |||
294 | base.setmetatable(ltn12, nil) | ||