@@ -167,6 +167,12 @@ export class Tokenizer {
167167 */
168168 public namespace : Namespace
169169
170+ /**
171+ * The flag which enables expression tokens.
172+ * If this is true, this tokenizer will generate V_EXPRESSION_START and V_EXPRESSION_END tokens.
173+ */
174+ public expressionEnabled : boolean
175+
170176 /**
171177 * Initialize this tokenizer.
172178 * @param text The source code to tokenize.
@@ -195,6 +201,7 @@ export class Tokenizer {
195201 this . tokenStartColumn = - 1
196202 this . tokenStartLine = 1
197203 this . namespace = NS . HTML
204+ this . expressionEnabled = false
198205 }
199206
200207 /**
@@ -535,12 +542,12 @@ export class Tokenizer {
535542 this . setStartTokenMark ( )
536543 return "TAG_OPEN"
537544 }
538- if ( cp === LEFT_CURLY_BRACKET ) {
545+ if ( cp === LEFT_CURLY_BRACKET && this . expressionEnabled ) {
539546 this . setStartTokenMark ( )
540547 this . returnState = "DATA"
541548 return "V_EXPRESSION_START"
542549 }
543- if ( cp === RIGHT_CURLY_BRACKET ) {
550+ if ( cp === RIGHT_CURLY_BRACKET && this . expressionEnabled ) {
544551 this . setStartTokenMark ( )
545552 this . returnState = "DATA"
546553 return "V_EXPRESSION_END"
@@ -584,12 +591,12 @@ export class Tokenizer {
584591 this . setStartTokenMark ( )
585592 return "RCDATA_LESS_THAN_SIGN"
586593 }
587- if ( cp === LEFT_CURLY_BRACKET ) {
594+ if ( cp === LEFT_CURLY_BRACKET && this . expressionEnabled ) {
588595 this . setStartTokenMark ( )
589596 this . returnState = "RCDATA"
590597 return "V_EXPRESSION_START"
591598 }
592- if ( cp === RIGHT_CURLY_BRACKET ) {
599+ if ( cp === RIGHT_CURLY_BRACKET && this . expressionEnabled ) {
593600 this . setStartTokenMark ( )
594601 this . returnState = "RCDATA"
595602 return "V_EXPRESSION_END"
@@ -630,12 +637,12 @@ export class Tokenizer {
630637 this . setStartTokenMark ( )
631638 return "RAWTEXT_LESS_THAN_SIGN"
632639 }
633- if ( cp === LEFT_CURLY_BRACKET ) {
640+ if ( cp === LEFT_CURLY_BRACKET && this . expressionEnabled ) {
634641 this . setStartTokenMark ( )
635642 this . returnState = "RAWTEXT"
636643 return "V_EXPRESSION_START"
637644 }
638- if ( cp === RIGHT_CURLY_BRACKET ) {
645+ if ( cp === RIGHT_CURLY_BRACKET && this . expressionEnabled ) {
639646 this . setStartTokenMark ( )
640647 this . returnState = "RAWTEXT"
641648 return "V_EXPRESSION_END"
0 commit comments