UNPKG

noflo-lift

Version:

Lift Packets for Processing in NoFlo

87 lines (59 loc) 2.83 kB
# Lift Packets for Processing in NoFlo <br/>[![Build Status](https://secure.travis-ci.org/kenhkan/noflo-lift.png?branch=master)](http://travis-ci.org/kenhkan/noflo-lift) [![Dependency Status](https://gemnasium.com/kenhkan/noflo-lift.png)](https://gemnasium.com/kenhkan/noflo-lift) [![NPM version](https://badge.fury.io/js/noflo-lift.png)](http://badge.fury.io/js/noflo-lift) [![Stories in Ready](https://badge.waffle.io/kenhkan/noflo-lift.png)](http://waffle.io/kenhkan/noflo-lift) In a [NoFlo](http://noflojs.org/) program, how the program processes data is more important than the data structure. It is evident in that most NoFlo programs expect a rather flat data structure of a series of packets enclosed in one or two levels of groups. When your program expects a more complex data structure, it is useful to be able to extract a subset of the structure, do some work, and plug it right back into where it was extracted from. noflo-lift allows you to literally "lift" a subset of the data structure by providing a pattern object for further processing on just that one piece. It then accepts some data structure that noflo-lift would then insert back in place. ## In Ports noflo-lift accepts data via these ports: #### IN Any valid NoFlo data structure #### PATTERN A pattern is a path-like array denoting the group structure to extract. For instance, in XML schematics, if you have an incoming data structure: <GroupA> <GroupB> <GroupC> <Data1/> <Data2/> </GroupC> <Data3/> <Data4/> </GroupB> <GroupD> <Data5/> <Data6/> </GroupD> </GroupA> And you want to extract just `GroupC` for processing, you would pass in, in JSON: [ "GroupA", "GroupB", "GroupC" ] #### RETURN The processed data structure must be returned to this port to continue its journal through the `OUT` port. See the `PROCESS` out port for details. #### RETOKEN Standing for REturnTOKEN, this port accepts a token to be used to retrieve what was stored in order for the returned object to replace it. #### CACHESIZE noflo-lift does not have a cache limit as it expects you to finish processing on all opened requests. You may optionally set a cache size if you deal with asynchronous operations that may fail. ## Out Ports noflo-lift emits data via these ports: #### OUT The data structure that has been processed and plugged back in is emitted to this port. #### EXTRACTED The extracted data structure is emitted here. It is grouped at the top-level by a token, which must group the processed data structure on return to the `RETURN` in port. #### EXTOKEN Standing for EXtractedTOKEN, this port emits the token when a sub-structure is extracted so Lift can identify which structure to replace when a new sub-structure is returned.