44*/
55var ContextDependencyHelpers = exports ;
66
7+ /**
8+ * Escapes regular expression metacharacters
9+ * @param {string } str
10+ * @return string
11+ */
12+ function quotemeta ( str ) {
13+ return str . replace ( / [ - [ \] \\ / { } ( ) * + ? . ^ $ | ] / g, "\\$&" )
14+ }
15+
716ContextDependencyHelpers . create = function ( Dep , range , param , expr , options ) {
817 var dep , prefix , postfix , prefixRange , valueRange , idx , context , regExp ;
918 if ( param . isTemplateString ( ) ) {
@@ -19,9 +28,9 @@ ContextDependencyHelpers.create = function(Dep, range, param, expr, options) {
1928 }
2029 // If there are more than two quasis, maybe the generated RegExp can be more precise?
2130 regExp = new RegExp ( "^" +
22- prefix . replace ( / [ \- \[ \] \/ \{ \} \( \) \* \+ \? \. \\ \^ \$ \| ] / g , "\\$&" ) +
31+ quotemeta ( prefix ) +
2332 options . wrappedContextRegExp . source +
24- postfix . replace ( / [ \- \[ \] \/ \{ \} \( \) \* \+ \? \. \\ \^ \$ \| ] / g , "\\$&" ) + "$" ) ;
33+ quotemeta ( postfix ) + "$" ) ;
2534 dep = new Dep ( context , options . wrappedContextRecursive , regExp , range , valueRange ) ;
2635 dep . loc = expr . loc ;
2736 dep . replaces = [ {
@@ -42,9 +51,9 @@ ContextDependencyHelpers.create = function(Dep, range, param, expr, options) {
4251 prefix = "." + prefix . substr ( idx ) ;
4352 }
4453 regExp = new RegExp ( "^" +
45- prefix . replace ( / [ \- \[ \] \/ \{ \} \( \) \* \+ \? \. \\ \^ \$ \| ] / g , "\\$&" ) +
54+ quotemeta ( prefix ) +
4655 options . wrappedContextRegExp . source +
47- postfix . replace ( / [ \- \[ \] \/ \{ \} \( \) \* \+ \? \. \\ \^ \$ \| ] / g , "\\$&" ) + "$" ) ;
56+ quotemeta ( postfix ) + "$" ) ;
4857 dep = new Dep ( context , options . wrappedContextRecursive , regExp , range , valueRange ) ;
4958 dep . loc = expr . loc ;
5059 dep . prepend = param . prefix && param . prefix . isString ( ) ? prefix : null ;
0 commit comments