@@ -88,6 +88,14 @@ var FilterEntry = function(s, tokenBeg, tokenLen) {
8888
8989/******************************************************************************/
9090
91+ FilterEntry . prototype . match = function ( s , tokenBeg ) {
92+ // rhill 2014-03-05: Benchmarking shows that's the fastest way to do this.
93+ var filterBeg = tokenBeg - this . tokenBeg ;
94+ return s . indexOf ( this . s , filterBeg ) === filterBeg ;
95+ } ;
96+
97+ /******************************************************************************/
98+
9199// Reset all, thus reducing to a minimum memory footprint of the context.
92100
93101var reset = function ( ) {
@@ -185,9 +193,8 @@ var add = function(s) {
185193 filter = new FilterEntry ( s , tokenBeg , token . length ) ;
186194 filterDict [ s ] = filter ;
187195
188- var prefixKey = tokenBeg > 0 ? s . charAt ( tokenBeg - 1 ) : '' ;
189- var suffixKey = s . substr ( tokenEnd , 2 ) ;
190-
196+ var prefixKey = s . substring ( tokenBeg - 1 , tokenBeg ) ;
197+ var suffixKey = s . substring ( tokenEnd , tokenEnd + 2 ) ;
191198 var fidx = filterIndex ;
192199 var tokenKey = prefixKey + token + suffixKey ;
193200 filter . next = fidx [ tokenKey ] ;
@@ -206,12 +213,9 @@ var freeze = function() {
206213/******************************************************************************/
207214
208215var matchStringToFilterChain = function ( filter , s , tokenBeg ) {
209- var filterBeg ;
210216 while ( filter !== undefined ) {
211- // rhill 2014-03-05: Benchmarking shows that's the fastest way to do this.
212- filterBeg = tokenBeg - filter . tokenBeg ;
213- if ( s . indexOf ( filter . s , filterBeg ) === filterBeg ) {
214- return true
217+ if ( filter . match ( s , tokenBeg ) ) {
218+ return true ;
215219 }
216220 filter = filter . next ;
217221 }
@@ -233,8 +237,8 @@ var matchString = function(s) {
233237 token = matches [ 0 ] ;
234238 tokenBeg = matches . index ;
235239 tokenEnd = reToken . lastIndex ;
236- prefixKey = tokenBeg > 0 ? s . charAt ( matches . index - 1 ) : '' ;
237- suffixKey = s . substr ( tokenEnd , 2 ) ;
240+ prefixKey = s . substring ( tokenBeg - 1 , tokenBeg ) ;
241+ suffixKey = s . substring ( tokenEnd , tokenEnd + 2 ) ;
238242
239243 if ( suffixKey . length > 1 ) {
240244 if ( prefixKey !== '' ) {
0 commit comments