streamsearch

    1.1.0 • Public • Published

    Description

    streamsearch is a module for node.js that allows searching a stream using the Boyer-Moore-Horspool algorithm.

    This module is based heavily on the Streaming Boyer-Moore-Horspool C++ implementation by Hongli Lai here.

    Requirements

    Installation

    npm install streamsearch
    

    Example

      const { inspect } = require('util');
    
      const StreamSearch = require('streamsearch');
    
      const needle = Buffer.from('\r\n');
      const ss = new StreamSearch(needle, (isMatch, data, start, end) => {
        if (data)
          console.log('data: ' + inspect(data.toString('latin1', start, end)));
        if (isMatch)
          console.log('match!');
      });
    
      const chunks = [
        'foo',
        ' bar',
        '\r',
        '\n',
        'baz, hello\r',
        '\n world.',
        '\r\n Node.JS rules!!\r\n\r\n',
      ];
      for (const chunk of chunks)
        ss.push(Buffer.from(chunk));
    
      // output:
      //
      // data: 'foo'
      // data: ' bar'
      // match!
      // data: 'baz, hello'
      // match!
      // data: ' world.'
      // match!
      // data: ' Node.JS rules!!'
      // match!
      // data: ''
      // match!

    API

    Properties

    • maxMatches - < integer > - The maximum number of matches. Defaults to Infinity.

    • matches - < integer > - The current match count.

    Functions

    • (constructor)(< mixed >needle, < function >callback) - Creates and returns a new instance for searching for a Buffer or string needle. callback is called any time there is non-matching data and/or there is a needle match. callback will be called with the following arguments:

      1. isMatch - boolean - Indicates whether a match has been found

      2. data - mixed - If set, this contains data that did not match the needle.

      3. start - integer - The index in data where the non-matching data begins (inclusive).

      4. end - integer - The index in data where the non-matching data ends (exclusive).

      5. isSafeData - boolean - Indicates if it is safe to store a reference to data (e.g. as-is or via data.slice()) or not, as in some cases data may point to a Buffer whose contents change over time.

    • destroy() - (void) - Emits any last remaining unmatched data that may still be buffered and then resets internal state.

    • push(< Buffer >chunk) - integer - Processes chunk, searching for a match. The return value is the last processed index in chunk + 1.

    • reset() - (void) - Resets internal state. Useful for when you wish to start searching a new/different stream for example.

    Install

    npm i streamsearch

    DownloadsWeekly Downloads

    5,215,210

    Version

    1.1.0

    License

    none

    Unpacked Size

    16.6 kB

    Total Files

    13

    Last publish

    Collaborators

    • mscdex