sentinal-stream

A transform stream which segregates a sentinel value into its own 'data' event.

Sentinal-Stream

A transform stream that finds a sentinal value in a data stream, and then emits it as a seperate data event.

Any time you want to take a particular action if a certain value appears in a stream, e.g. splitting a stream, stopping a stream early, etc.

sentinal = new Sentinal(sep) returns a transform stream. sep is a buffered string. It will be stored on sentinal.seperator.

Example

var Sentinal = require('sentinal-stream')
  , through = require('through') // npm.im/through 
  , from = require('from') // npm.im/from 
  , sentence = ''
 
var periods = new Sentinal(new Buffer('|||'))
 
var source = from([
    '||| is the delimiter.'
  , ' Sometimes it fits|||'
  , 'Sometimes it might take'
  , 'more than one line|||'
  , 'Look||| two per chunk|||'
  , '||| or ||| even ||| three!'
  , 'And sometimes only part ||'
  , '| Of the separator fits.'
])
 
var gather_wipe = through(function(data) {
  if(data === periods.seperator) {
    sentence && console.log(sentence + '.')
    sentence = ''
    return
  }
  sentence += data 
})
 
source
  .pipe(periods)
  .pipe(gather_wipe) 
 
 

Yields:

is the delimiter. Sometimes it fits.
Sometimes it might take more than one line.
Look. two per chunk.
or even three! And sometimes only part .
 Of the seperator fits.