@@ -702,7 +702,6 @@ var FilterContainer = function() {
702702 // Used during URL matching
703703 this . categoryBuckets = new Array ( 8 ) ;
704704 this . reAnyToken = / [ % 0 - 9 a - z ] + / g;
705- this . reMatches = null ;
706705} ;
707706
708707/******************************************************************************/
@@ -834,7 +833,7 @@ FilterContainer.prototype.addFilter = function(parsed) {
834833FilterContainer . prototype . addFilterEntry = function ( filter , parsed , party , tokenBeg , tokenEnd ) {
835834 var s = parsed . f ;
836835 var prefixKey = trimChar ( s . substring ( tokenBeg - 1 , tokenBeg ) , '*' ) ;
837- var suffixKey = trimChar ( s . substring ( tokenEnd , tokenEnd + 2 ) , '*' ) ;
836+ var suffixKey = trimChar ( s . substring ( tokenEnd , tokenEnd + 1 ) , '*' ) ;
838837 var tokenKey = prefixKey + s . slice ( tokenBeg , tokenEnd ) + suffixKey ;
839838 if ( parsed . types . length === 0 ) {
840839 this . addToCategory ( parsed . action | AnyType | party , tokenKey , filter ) ;
@@ -888,69 +887,45 @@ FilterContainer.prototype.freeze = function() {
888887
889888/******************************************************************************/
890889
891- FilterContainer . prototype . matchToken = function ( categoryBucket ) {
892- var url = this . url ;
893- var beg = this . reMatches . index ;
894- var end = this . reAnyToken . lastIndex ;
895- var right = url . length - end ;
896- var f ;
897-
898- if ( right > 1 ) {
899- if ( beg !== 0 ) {
900- f = categoryBucket [ url . slice ( beg - 1 , end + 2 ) ] ;
901- if ( f !== undefined && f . match ( url , beg ) !== false ) {
902- return f . s ;
903- }
904- }
905- f = categoryBucket [ url . slice ( beg , end + 2 ) ] ;
906- if ( f !== undefined && f . match ( url , beg ) !== false ) {
907- return f . s ;
908- }
909- }
910- if ( right > 0 ) {
911- if ( beg !== 0 ) {
912- f = categoryBucket [ url . slice ( beg - 1 , end + 1 ) ] ;
913- if ( f !== undefined && f . match ( url , beg ) !== false ) {
914- return f . s ;
915- }
916- }
917- f = categoryBucket [ url . slice ( beg , end + 1 ) ] ;
918- if ( f !== undefined && f . match ( url , beg ) !== false ) {
919- return f . s ;
920- }
921- }
922- if ( beg !== 0 ) {
923- f = categoryBucket [ url . slice ( beg - 1 , end ) ] ;
924- if ( f !== undefined && f . match ( url , beg ) !== false ) {
925- return f . s ;
926- }
927- }
928- f = categoryBucket [ url . slice ( beg , end ) ] ;
929- if ( f !== undefined && f . match ( url , beg ) !== false ) {
930- return f . s ;
931- }
932- return false ;
933- } ;
934-
935- /******************************************************************************/
936-
937890FilterContainer . prototype . matchTokens = function ( ) {
938891 var buckets = this . categoryBuckets ;
939892 var url = this . url ;
893+ var urlLen = url . length ;
940894 var re = this . reAnyToken ;
941- var i , bucket , f ;
895+ var beg , end , i , bucket , f ;
896+ var matches ;
942897
943898 re . lastIndex = 0 ;
944- while ( this . reMatches = re . exec ( url ) ) {
899+ while ( matches = re . exec ( url ) ) {
900+ beg = matches . index ;
901+ end = re . lastIndex ;
945902 i = 8 ;
946903 while ( i -- ) {
947904 bucket = buckets [ i ] ;
948905 if ( bucket === undefined ) {
949906 continue ;
950907 }
951- f = this . matchToken ( bucket ) ;
952- if ( f !== false ) {
953- return f ;
908+ if ( end !== urlLen ) {
909+ if ( beg !== 0 ) {
910+ f = bucket [ url . slice ( beg - 1 , end + 1 ) ] ;
911+ if ( f !== undefined && f . match ( url , beg ) !== false ) {
912+ return f . s ;
913+ }
914+ }
915+ f = bucket [ url . slice ( beg , end + 1 ) ] ;
916+ if ( f !== undefined && f . match ( url , beg ) !== false ) {
917+ return f . s ;
918+ }
919+ }
920+ if ( beg !== 0 ) {
921+ f = bucket [ url . slice ( beg - 1 , end ) ] ;
922+ if ( f !== undefined && f . match ( url , beg ) !== false ) {
923+ return f . s ;
924+ }
925+ }
926+ f = bucket [ url . slice ( beg , end ) ] ;
927+ if ( f !== undefined && f . match ( url , beg ) !== false ) {
928+ return f . s ;
954929 }
955930 }
956931 }
0 commit comments