str

streamsearch

Streaming Boyer-Moore-Horspool searching for node.js

Showing:

Popularity

Downloads/wk

4.8M

GitHub Stars

48

Maintenance

Last Commit

7yrs ago

Contributors

0

Package

Dependencies

0

Size (min+gzip)

0.9KB

License

Type Definitions

Tree-Shakeable

No?

Categories

Readme

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

  var StreamSearch = require('streamsearch'),
      inspect = require('util').inspect;

  var needle = new Buffer([13, 10]), // CRLF
      s = new StreamSearch(needle),
      chunks = [
        new Buffer('foo'),
        new Buffer(' bar'),
        new Buffer('\r'),
        new Buffer('\n'),
        new Buffer('baz, hello\r'),
        new Buffer('\n world.'),
        new Buffer('\r\n Node.JS rules!!\r\n\r\n')
      ];
  s.on('info', function(isMatch, data, start, end) {
    if (data)
      console.log('data: ' + inspect(data.toString('ascii', start, end)));
    if (isMatch)
      console.log('match!');
  });
  for (var i = 0, len = chunks.length; i < len; ++i)
    s.push(chunks[i]);

  // output:
  //
  // data: 'foo'
  // data: ' bar'
  // match!
  // data: 'baz, hello'
  // match!
  // data: ' world.'
  // match!
  // data: ' Node.JS rules!!'
  // match!
  // data: ''
  // match!

API

Events

  • info(< boolean >isMatch[, < Buffer >chunk, < integer >start, < integer >end]) - A match may or may not have been made. In either case, a preceding chunk of data may be available that did not match the needle. Data (if available) is in chunk between start (inclusive) and end (exclusive).

Properties

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

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

Functions

  • (constructor)(< mixed >needle) - Creates and returns a new instance for searching for a Buffer or string needle.

  • push(< Buffer >chunk) - integer - Processes chunk. 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.

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100
devcoder1112 Ratings0 Reviews
August 26, 2020

Alternatives

No alternatives found

Tutorials

No tutorials found
Add a tutorial