11import type { LiquidTag , LiquidConditionalExpression } from './parser-compat' ;
22import type { Context } from './context' ;
33import {
4+ analyzeMarkup ,
45 conditionalHasBareArrayAccess ,
5- hasInvalidBooleanExpressionComparisonMarkup ,
6- hasInvalidBooleanExpressionLexerMarkup ,
7- hasInvalidBooleanExpressionLookupMarkup ,
8- hasInvalidBooleanExpressionTokenMarkup ,
9- hasInvalidBooleanComparisonRhsMarkup ,
10- hasInvalidBooleanComparisonRhsLookupMarkup ,
11- hasInvalidComparisonRhsMarkup ,
6+ hasBooleanExpressionLiquidSyntaxError ,
7+ hasConditionalLiquidSyntaxError ,
128 hasInvalidConditionalLookupMarkup ,
13- hasInvalidLogicalOperandMarkup ,
14- hasInvalidStandaloneConditionalLexerMarkup ,
159 hasInvalidStandaloneConditionalTokenMarkup ,
1610 hasRubyAcceptedWhitespaceSeparatedQuotePrefix ,
1711 hasSkippedCharacters ,
@@ -27,20 +21,12 @@ const LIQUID_SYNTAX_ERROR = `Liquid syntax error: ${SYNTAX_ERROR}`;
2721
2822export function checkUnlessTag ( node : LiquidTag , context : Context ) : void {
2923 if ( typeof node . markup === 'string' ) {
24+ const markupAnalysis = analyzeMarkup ( node . markup ) ;
25+
3026 context . report ( {
3127 message :
32- hasSingleTrailingConditionalToken ( node . markup ) ||
33- hasInvalidBooleanExpressionComparisonMarkup ( node . markup ) ||
34- hasInvalidBooleanExpressionLexerMarkup ( node . markup ) ||
35- hasInvalidBooleanExpressionLookupMarkup ( node . markup ) ||
36- hasInvalidBooleanExpressionTokenMarkup ( node . markup ) ||
37- hasInvalidConditionalLookupMarkup ( node . markup ) ||
38- hasInvalidBooleanComparisonRhsMarkup ( node . markup ) ||
39- hasInvalidBooleanComparisonRhsLookupMarkup ( node . markup ) ||
40- hasInvalidComparisonRhsMarkup ( node . markup ) ||
41- hasInvalidLogicalOperandMarkup ( node . markup ) ||
42- hasInvalidStandaloneConditionalLexerMarkup ( node . markup ) ||
43- hasInvalidStandaloneConditionalTokenMarkup ( node . markup )
28+ hasSingleTrailingConditionalToken ( markupAnalysis ) ||
29+ hasConditionalLiquidSyntaxError ( markupAnalysis )
4430 ? LIQUID_SYNTAX_ERROR
4531 : SYNTAX_ERROR ,
4632 startIndex : node . position . start ,
@@ -52,17 +38,10 @@ export function checkUnlessTag(node: LiquidTag, context: Context): void {
5238 const source = node . source ;
5339 const markup = node . markup as LiquidConditionalExpression ;
5440 const tagMarkup = rawMarkup ( node ) ;
41+ const tagMarkupAnalysis = analyzeMarkup ( tagMarkup ) ;
5542 const skippedPrefix = source . slice ( node . markupPosition . start , markup . position . start ) ;
5643
57- if (
58- hasInvalidBooleanExpressionComparisonMarkup ( tagMarkup ) ||
59- hasInvalidBooleanExpressionLexerMarkup ( tagMarkup ) ||
60- hasInvalidBooleanExpressionLookupMarkup ( tagMarkup ) ||
61- hasInvalidBooleanExpressionTokenMarkup ( tagMarkup ) ||
62- hasInvalidBooleanComparisonRhsMarkup ( tagMarkup ) ||
63- hasInvalidBooleanComparisonRhsLookupMarkup ( tagMarkup ) ||
64- hasInvalidComparisonRhsMarkup ( tagMarkup )
65- ) {
44+ if ( hasBooleanExpressionLiquidSyntaxError ( tagMarkupAnalysis ) ) {
6645 context . report ( {
6746 message : LIQUID_SYNTAX_ERROR ,
6847 startIndex : node . position . start ,
@@ -71,7 +50,7 @@ export function checkUnlessTag(node: LiquidTag, context: Context): void {
7150 return ;
7251 }
7352
74- if ( hasInvalidConditionalLookupMarkup ( tagMarkup ) ) {
53+ if ( hasInvalidConditionalLookupMarkup ( tagMarkupAnalysis ) ) {
7554 context . report ( {
7655 message : LIQUID_SYNTAX_ERROR ,
7756 startIndex : node . position . start ,
@@ -80,7 +59,7 @@ export function checkUnlessTag(node: LiquidTag, context: Context): void {
8059 return ;
8160 }
8261
83- if ( hasInvalidStandaloneConditionalTokenMarkup ( tagMarkup ) ) {
62+ if ( hasInvalidStandaloneConditionalTokenMarkup ( tagMarkupAnalysis ) ) {
8463 context . report ( {
8564 message : LIQUID_SYNTAX_ERROR ,
8665 startIndex : node . position . start ,
@@ -90,7 +69,7 @@ export function checkUnlessTag(node: LiquidTag, context: Context): void {
9069 }
9170
9271 if (
93- hasUnclosedQuotedString ( tagMarkup ) &&
72+ hasUnclosedQuotedString ( tagMarkupAnalysis ) &&
9473 ! hasRubyAcceptedWhitespaceSeparatedQuotePrefix ( skippedPrefix )
9574 ) {
9675 context . report ( {
@@ -120,22 +99,12 @@ export function checkUnlessTag(node: LiquidTag, context: Context): void {
12099 }
121100
122101 const parsedMarkup = source . slice ( markup . position . start , node . markupPosition . end ) ;
123- if ( hasSkippedCharacters ( parsedMarkup ) ) {
102+ const parsedMarkupAnalysis = analyzeMarkup ( parsedMarkup ) ;
103+ if ( hasSkippedCharacters ( parsedMarkupAnalysis ) ) {
124104 context . report ( {
125- message :
126- hasInvalidConditionalLookupMarkup ( parsedMarkup ) ||
127- hasInvalidBooleanExpressionComparisonMarkup ( parsedMarkup ) ||
128- hasInvalidBooleanExpressionLexerMarkup ( parsedMarkup ) ||
129- hasInvalidBooleanExpressionLookupMarkup ( parsedMarkup ) ||
130- hasInvalidBooleanExpressionTokenMarkup ( parsedMarkup ) ||
131- hasInvalidBooleanComparisonRhsMarkup ( parsedMarkup ) ||
132- hasInvalidBooleanComparisonRhsLookupMarkup ( parsedMarkup ) ||
133- hasInvalidComparisonRhsMarkup ( parsedMarkup ) ||
134- hasInvalidLogicalOperandMarkup ( parsedMarkup ) ||
135- hasInvalidStandaloneConditionalLexerMarkup ( parsedMarkup ) ||
136- hasInvalidStandaloneConditionalTokenMarkup ( parsedMarkup )
137- ? LIQUID_SYNTAX_ERROR
138- : SYNTAX_ERROR ,
105+ message : hasConditionalLiquidSyntaxError ( parsedMarkupAnalysis )
106+ ? LIQUID_SYNTAX_ERROR
107+ : SYNTAX_ERROR ,
139108 startIndex : node . position . start ,
140109 endIndex : node . position . end ,
141110 } ) ;
0 commit comments