@@ -10,7 +10,7 @@ const revertBackupedLocals = require('./backup').revert
1010const placeholders = require ( './placeholders' )
1111
1212const delimitersSettings = [ ]
13- let conditionals , switches , loops , scopes , ignored , ignoredBefore , ignoredAfter , toReplace , ignoredNodeExpression , ignoredAttrsExpression
13+ let conditionals , switches , loops , scopes , ignored , delimitersReplace , unescapeDelimitersReplace
1414
1515/**
1616 * @description Creates a set of local variables within the loop, and evaluates all nodes within the loop, returning their contents
@@ -124,12 +124,12 @@ module.exports = function postHTMLExpressions (options) {
124124 let before = escapeRegexpString ( options . delimiters [ 0 ] )
125125 let after = escapeRegexpString ( options . delimiters [ 1 ] )
126126
127- const delimitersRegexp = new RegExp ( `${ before } (.+?)${ after } ` , 'g' )
127+ const delimitersRegexp = new RegExp ( `(?<!@) ${ before } (.+?)${ after } ` , 'g' )
128128
129129 before = escapeRegexpString ( options . unescapeDelimiters [ 0 ] )
130130 after = escapeRegexpString ( options . unescapeDelimiters [ 1 ] )
131131
132- const unescapeDelimitersRegexp = new RegExp ( `${ before } (.+?)${ after } ` , 'g' )
132+ const unescapeDelimitersRegexp = new RegExp ( `(?<!@) ${ before } (.+?)${ after } ` , 'g' )
133133
134134 // make array of delimiters
135135 const delimiters = [
@@ -147,13 +147,9 @@ module.exports = function postHTMLExpressions (options) {
147147 delimitersSettings [ 0 ] = delimiters [ 1 ]
148148 delimitersSettings [ 1 ] = delimiters [ 0 ]
149149 }
150-
151-
152- ignoredBefore = delimitersSettings [ 1 ] . text [ 0 ]
153- ignoredAfter = delimitersSettings [ 1 ] . text [ 1 ]
154- toReplace = new RegExp ( `@${ ignoredBefore } ` , 'g' )
155- ignoredNodeExpression = new RegExp ( `@${ ignoredBefore } (.+?)${ ignoredAfter } ` , 'g' )
156- ignoredAttrsExpression = new RegExp ( `.*@${ ignoredBefore } (.+?)${ ignoredAfter } ` )
150+
151+ delimitersReplace = new RegExp ( `@${ delimitersSettings [ 1 ] . text [ 0 ] } ` , 'g' )
152+ unescapeDelimitersReplace = new RegExp ( `@${ delimitersSettings [ 0 ] . text [ 0 ] } ` , 'g' )
157153
158154 // kick off the parsing
159155 return walk . bind ( null , { locals : options . locals } )
@@ -183,16 +179,10 @@ function walk (opts, nodes) {
183179
184180 // if we have a string, match and replace it
185181 if ( typeof node === 'string' ) {
186- // if node contains ignored expression delimiter, output as-is
187- if ( ignoredNodeExpression . test ( node ) ) {
188- node = node . replace ( toReplace , ignoredBefore )
189-
190- m . push ( node )
191-
192- return m
193- }
194-
195182 node = placeholders ( node , ctx , delimitersSettings )
183+ node = node
184+ . replace ( unescapeDelimitersReplace , delimitersSettings [ 0 ] . text [ 0 ] )
185+ . replace ( delimitersReplace , delimitersSettings [ 1 ] . text [ 0 ] )
196186
197187 m . push ( node )
198188
@@ -202,11 +192,10 @@ function walk (opts, nodes) {
202192 // if not, we have an object, so we need to run the attributes and contents
203193 if ( node . attrs ) {
204194 for ( const key in node . attrs ) {
205- if ( ignoredAttrsExpression . test ( node . attrs [ key ] ) ) {
206- node . attrs [ key ] = node . attrs [ key ] . replace ( toReplace , ignoredBefore )
207- } else {
208- node . attrs [ key ] = placeholders ( node . attrs [ key ] , ctx , delimitersSettings )
209- }
195+ node . attrs [ key ] = placeholders ( node . attrs [ key ] , ctx , delimitersSettings )
196+ node . attrs [ key ] = node . attrs [ key ]
197+ . replace ( unescapeDelimitersReplace , delimitersSettings [ 0 ] . text [ 0 ] )
198+ . replace ( delimitersReplace , delimitersSettings [ 1 ] . text [ 0 ] )
210199 }
211200 }
212201
0 commit comments