module.exports = function () { return split().pipe(pull.map(function (line) { var parts = line.split(/\s+/) if(parts.shift() !== '!') return var event = parts.shift() var module = parts.shift() if(!/^([\w\-_.0-9]+\/)*[\w\-_.0-9]+@\d+\.\d+\.\d+$/.test(module)) return console.error('invalid version:', module) var m = module.split('@') var name = m.shift() var version = m.shift() var instance = parts.shift() data = JSON.parse(parts.join(' ')) return { key: event, id: instance, module: name, version: version, value: data } })) }
test('stringify delimits after value', function (t) { const pushable = Pushable() var i = 0 pull( pushable, stringify(), split('\n\n', function (value) { return value ? JSON.parse(value) : null }), pull.drain(function (actual) { const expected = values[i++] t.deepEqual(actual, expected) if (i === values.length) { pushable.end() t.end() } }) ) Object.keys(values).forEach(function (index) { pushable.push(values[index]) }) })
movies.load = function() { return function(cb) { if(!cb) cb = function(err) { if(err) throw err } movies.reset() debug.movies('loading') pull( stps.source(fs.createReadStream(data.path)), split(), pull.filter(function(line) { return line.length > 0 }), pull.map(function(entry) { return { name: entry } }), pull.drain(function(movie) { movie.id = movies.length movies.push(movie) }, function() { debug.movies('loaded') movies.emit('loaded') cb(null, data) }) ) } }
fs.stat(file, function (err, stat) { if(err) return done(err.code == 'ENOENT' ? null : err) //if there is already a file, start writing to end position = stat.size pull( toPull.source(fs.createReadStream(file)), split(/\r?\n/, function (e) { if (e) return JSON.parse(e) }), pull.through(function (data) { if(data) store[data.key] = data.value }), pull.drain(null, done) ) })
function filteredTSVStream (path, parse, predicate) { return pull( readFile(path), decodeUTF8(), split( '\n', false, // Do not map. false, // Do not reverse. true // Skip the last. ), map(function (line) { return parse(line.split('\t')) }), filter(predicate), suppressENOENT ) }
var tbr = LTBR(db, function (since) { var u = url.format({ protocol: 'http', hostname: config.megaHost, port: config.megaPort, pathname: '/query', search: qs.encode({gt: since}) }) console.error('GET', u) return pull( toPull(hyperquest(u)), split(), pull.filter(function (e) { return e && e.length }), pull.map(csvLine.decode) ) })
var parse = require('irc-parser') var socket = net.connect({ host: '127.0.0.1', port: 6667 }, function() { console.log('Connected') }) var output = pushable() output.push('NICK cbotn') output.push('USER cbotn 8 * :cbotn') pull( toPullStream.source(socket), split(), pull.Through(function(read) { read(null, function next(end, data) { if(!end) { var input = parse(data) console.log('IN: ', data, input) if(input.command == 'PING') { output.push('PONG :' + input.params[0]) } read(null, next) } }) return output })(), pull.map(function(data) { console.log('OUT: %s', data)
var cp = require('child_process') var toPull = require('../') var pull = require('pull-stream') var split = require('pull-split') console.log(process.execPath, [require.resolve('./stdout')]) var child = cp.spawn(process.execPath, [require.resolve('./stdout')]) child.on('exit', function () { console.log('ended') }) pull( toPull.source(child.stdout), split('\n\n'), pull.filter(), pull.map(function (e) { try { return JSON.parse(e) } catch (err) { console.log(JSON.stringify(e)) //throw err } }), pull.asyncMap(function (data, cb) { setTimeout(function () { cb(null, data) }, 10) }),