root / HServer / 00.Server / 00.Program / node_modules / streamsearch / README.md
이력 | 보기 | 이력해설 | 다운로드 (2.25 KB)
| 1 |
Description |
|---|---|
| 2 |
=========== |
| 3 |
|
| 4 |
streamsearch is a module for [node.js](http://nodejs.org/) that allows searching a stream using the Boyer-Moore-Horspool algorithm. |
| 5 |
|
| 6 |
This module is based heavily on the Streaming Boyer-Moore-Horspool C++ implementation by Hongli Lai [here](https://github.com/FooBarWidget/boyer-moore-horspool). |
| 7 |
|
| 8 |
|
| 9 |
Requirements |
| 10 |
============ |
| 11 |
|
| 12 |
* [node.js](http://nodejs.org/) -- v0.8.0 or newer |
| 13 |
|
| 14 |
|
| 15 |
Installation |
| 16 |
============ |
| 17 |
|
| 18 |
npm install streamsearch |
| 19 |
|
| 20 |
Example |
| 21 |
======= |
| 22 |
|
| 23 |
```javascript |
| 24 |
var StreamSearch = require('streamsearch'),
|
| 25 |
inspect = require('util').inspect;
|
| 26 |
|
| 27 |
var needle = new Buffer([13, 10]), // CRLF |
| 28 |
s = new StreamSearch(needle), |
| 29 |
chunks = [ |
| 30 |
new Buffer('foo'),
|
| 31 |
new Buffer(' bar'),
|
| 32 |
new Buffer('\r'),
|
| 33 |
new Buffer('\n'),
|
| 34 |
new Buffer('baz, hello\r'),
|
| 35 |
new Buffer('\n world.'),
|
| 36 |
new Buffer('\r\n Node.JS rules!!\r\n\r\n')
|
| 37 |
]; |
| 38 |
s.on('info', function(isMatch, data, start, end) {
|
| 39 |
if (data) |
| 40 |
console.log('data: ' + inspect(data.toString('ascii', start, end)));
|
| 41 |
if (isMatch) |
| 42 |
console.log('match!');
|
| 43 |
}); |
| 44 |
for (var i = 0, len = chunks.length; i < len; ++i) |
| 45 |
s.push(chunks[i]); |
| 46 |
|
| 47 |
// output: |
| 48 |
// |
| 49 |
// data: 'foo' |
| 50 |
// data: ' bar' |
| 51 |
// match! |
| 52 |
// data: 'baz, hello' |
| 53 |
// match! |
| 54 |
// data: ' world.' |
| 55 |
// match! |
| 56 |
// data: ' Node.JS rules!!' |
| 57 |
// match! |
| 58 |
// data: '' |
| 59 |
// match! |
| 60 |
``` |
| 61 |
|
| 62 |
|
| 63 |
API |
| 64 |
=== |
| 65 |
|
| 66 |
Events |
| 67 |
------ |
| 68 |
|
| 69 |
* **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). |
| 70 |
|
| 71 |
|
| 72 |
Properties |
| 73 |
---------- |
| 74 |
|
| 75 |
* **maxMatches** - < _integer_ > - The maximum number of matches. Defaults to Infinity. |
| 76 |
|
| 77 |
* **matches** - < _integer_ > - The current match count. |
| 78 |
|
| 79 |
|
| 80 |
Functions |
| 81 |
--------- |
| 82 |
|
| 83 |
* **(constructor)**(< _mixed_ >needle) - Creates and returns a new instance for searching for a _Buffer_ or _string_ `needle`. |
| 84 |
|
| 85 |
* **push**(< _Buffer_ >chunk) - _integer_ - Processes `chunk`. The return value is the last processed index in `chunk` + 1. |
| 86 |
|
| 87 |
* **reset**() - _(void)_ - Resets internal state. Useful for when you wish to start searching a new/different stream for example. |