connor4312 / streamsearch

Streaming Boyer-Moore-Horspool searching for node.js

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Description

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

This fork adds browser support, removes deprecation warnings, and includes a 1:1 conversion to TypeScript.

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

Installation

npm install @vscode/streamsearch

Example

import StreamSearch from "@vscode/streamsearch";
import { inspect } from "util";

const needle = new Buffer([13, 10]); // CRLF
const s = new StreamSearch(needle, (isMatch, data) => {
  if (data) console.log("data: " + inspect(data.toString("ascii", start, end)));
  if (isMatch) console.log("match!");
});

const 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"),
];

for (const chunk of chunks) {
  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.

About

Streaming Boyer-Moore-Horspool searching for node.js

License:MIT License


Languages

Language:TypeScript 100.0%