Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/virgo-agent-toolkit/luvit-stream
Stream interface in Luvit - this is now in Luvit core
https://github.com/virgo-agent-toolkit/luvit-stream
Last synced: 3 months ago
JSON representation
Stream interface in Luvit - this is now in Luvit core
- Host: GitHub
- URL: https://github.com/virgo-agent-toolkit/luvit-stream
- Owner: virgo-agent-toolkit
- License: apache-2.0
- Created: 2014-05-29T19:12:32.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2014-08-16T02:43:09.000Z (about 10 years ago)
- Last Synced: 2024-04-13T22:04:15.708Z (7 months ago)
- Language: Lua
- Homepage:
- Size: 742 KB
- Stars: 6
- Watchers: 14
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
luvit-stream
============Stream interface in Luvit
## Examples
A simple example of `Readable` stream in string mode:
```
local stream = require('..')
local Numbers = stream.Readable:extend()
function Numbers:initialize(count, options)
local opt = options or {}
stream.Readable.initialize(self, opt)
self.current = 1
self.count = count
endfunction Numbers:_read()
if self.current > self.count then
self:push(nil)
return
else
self:push(tostring(self.current))
self.current = self.current + 1
end
endNumbers:new(9):pipe(process.stdout)
```
A more complex example using object mode with a `Readable` stream and two `Transform` streams:
```
local stream = require('..')
local fs = require('fs')
local core = require('core')local Numbers = stream.Readable:extend()
function Numbers:initialize(count, options)
local opt = options or {}
opt.objectMode = true
stream.Readable.initialize(self, opt)
self.current = 1
self.count = count
endfunction Numbers:_read()
if self.current > self.count then
self:push(nil)
return
else
self:push({num = self.current})
self.current = self.current + 1
end
endlocal NumberIncreaser = stream.Transform:extend()
function NumberIncreaser:initialize(options)
local opt = options or {}
opt.objectMode = true
stream.Transform.initialize(self, opt)
endfunction NumberIncreaser:_transform(data, encoding, callback)
callback(nil, {num = data.num + 1})
endlocal Stringify = stream.Transform:extend()
function Stringify:initialize(options)
local opt = options or {}
opt.objectMode = true
stream.Transform.initialize(self, opt)
endfunction Stringify:_transform(data, encoding, callback)
if data and data.num then
callback(nil, tostring(data.num))
end
endNumbers:new(9):pipe(NumberIncreaser:new()):pipe(Stringify:new()):pipe(process.stdout)
```