noflo-swiss
Version:
Swiss Army Knife for NoFlo Programming
50 lines (36 loc) • 1.11 kB
text/coffeescript
noflo = require("noflo")
_ = require("underscore")
_s = require("underscore.string")
class Underscore extends noflo.Component
description: _s.clean "Invoke an Underscore.js function by providing the
function name"
constructor: ->
@stream = true
@inPorts =
in: new noflo.Port
stream: new noflo.Port
name: new noflo.Port
@outPorts =
out: new noflo.Port
@inPorts.stream.on "data", (stream) =>
@stream = stream is "true"
@inPorts.name.on "data", (@name) =>
@inPorts.in.on "connect", =>
@packets = []
@inPorts.in.on "begingroup", (group) =>
@outPorts.out.beginGroup group
@inPorts.in.on "data", (data) =>
if @stream
if @name?
@outPorts.out.send _[@name] data
else
@outPorts.out.send data
else
@packets.push(data)
@inPorts.in.on "endgroup", (group) =>
@outPorts.out.endGroup()
@inPorts.in.on "disconnect", =>
unless @stream
@outPorts.out.send _[@name].apply _, @packets
@outPorts.out.disconnect()
exports.getComponent = -> new Underscore