boris
Version:
Boris a pure javascript parser for the Redis serialization protocol (RESP).
51 lines (43 loc) • 1.25 kB
JavaScript
/*
* GENERIC RULE
*/
exports.Rule = ( function () {
var emitter = require('events').EventEmitter
, util = require( 'util' )
, Abaco = require( 'abaco' )
// match CRLF value
, crlf = new Buffer( '\r\n' ).readUInt16BE( 0 )
, Rule = function ( char ) {
var me = this
, is = me instanceof Rule
, ctable = null
;
if ( ! is ) return new Rule( char );
ctable = new Buffer( 255 );
ctable.fill( 0 );
ctable[ 0x0d ] = 1;
me.cid = char ? char : '';
me.ccode = me.cid.charCodeAt( 0 );
me.ctable = ctable;
}
, rproto = null
;
util.inherits( Rule, emitter );
rproto = Rule.prototype;
rproto.parse = function () {
};
rproto.match = function ( buff, offset ) {
var b = buff
, blen = b.length
, l = blen ? blen - 1 : 0
, o = offset || 0
;
for ( ; o < l; ++o )
if ( ! ( crlf ^ ( b[ o ] << 8 | b[ o + 1 ] ) ) ) return o;
return -1;
};
rproto.parseInt = Abaco.parseInt;
rproto.reset = function () {
};
return Rule;
} )();