@@ -56,11 +56,25 @@ public class FluidParser
5656 protected readonly Deferred < IReadOnlyList < Statement > > KnownTagsList = Deferred < IReadOnlyList < Statement > > ( ) ;
5757 protected readonly Deferred < IReadOnlyList < Statement > > AnyTagsList = Deferred < IReadOnlyList < Statement > > ( ) ;
5858
59- protected static readonly Parser < TagResult > OutputStart = TagParsers . OutputTagStart ( ) ;
60- protected static readonly Parser < TagResult > OutputEnd = TagParsers . OutputTagEnd ( true ) ;
61- protected static readonly Parser < TagResult > TagStart = TagParsers . TagStart ( ) ;
62- protected static readonly Parser < TagResult > TagStartSpaced = TagParsers . TagStart ( true ) ;
63- protected static readonly Parser < TagResult > TagEnd = TagParsers . TagEnd ( true ) ;
59+ internal const string WhiteSpaceChars = "\t \n \v \f \r \u0085 \u2028 \u2029 " ;
60+
61+ protected static readonly Parser < TagResult > InlineOutputStart = TagParsers . OutputTagStart ( ) ;
62+ protected static readonly Parser < TagResult > InlineOutputEnd = TagParsers . OutputTagEnd ( ) ;
63+ protected static readonly Parser < TagResult > InlineTagStart = TagParsers . TagStart ( ) ;
64+ protected static readonly Parser < TagResult > InlineTagEnd = TagParsers . TagEnd ( ) ;
65+
66+ protected static readonly Parser < TagResult > NoInlineOutputStart = NonInlineLiquidTagParsers . OutputTagStart ( ) ;
67+ protected static readonly Parser < TagResult > NoInlineOutputEnd = Literals . AnyOf ( WhiteSpaceChars , minSize : 0 ) . SkipAnd ( NonInlineLiquidTagParsers . OutputTagEnd ( ) ) ;
68+ protected static readonly Parser < TagResult > NoInlineTagStart = NonInlineLiquidTagParsers . TagStart ( ) ;
69+ protected static readonly Parser < TagResult > NoInlineTagEnd = Literals . AnyOf ( WhiteSpaceChars , minSize : 0 ) . SkipAnd ( NonInlineLiquidTagParsers . TagEnd ( ) ) ;
70+
71+ protected readonly Parser < TagResult > OutputStart = InlineOutputStart ;
72+ protected readonly Parser < TagResult > OutputEnd = InlineOutputEnd ;
73+ protected readonly Parser < TagResult > TagStart = InlineTagStart ;
74+ protected readonly Parser < TagResult > TagEnd = InlineTagEnd ;
75+
76+ protected static readonly Parser < TagResult > RawOutputStart = NonInlineLiquidTagParsers . OutputTagStart ( ) ;
77+ protected static readonly Parser < TagResult > RawTagStart = NonInlineLiquidTagParsers . TagStart ( ) ;
6478
6579 protected static readonly LiteralExpression EmptyKeyword = new LiteralExpression ( EmptyValue . Instance ) ;
6680 protected static readonly LiteralExpression BlankKeyword = new LiteralExpression ( BlankValue . Instance ) ;
@@ -73,6 +87,14 @@ public FluidParser() : this(new())
7387
7488 public FluidParser ( FluidParserOptions parserOptions )
7589 {
90+ if ( ! parserOptions . AllowLiquidTag )
91+ {
92+ OutputStart = NoInlineOutputStart ;
93+ OutputEnd = NoInlineOutputEnd ;
94+ TagStart = NoInlineTagStart ;
95+ TagEnd = NoInlineTagEnd ;
96+ }
97+
7698 String . Name = "String" ;
7799 Number . Name = "Number" ;
78100
@@ -574,7 +596,7 @@ public FluidParser(FluidParserOptions parserOptions)
574596 Grammar = KnownTagsList ;
575597 }
576598
577- public static Parser < string > CreateTag ( string tagName ) => TagStart . SkipAnd ( Terms . Text ( tagName ) ) . AndSkip ( TagEnd ) ;
599+ public Parser < string > CreateTag ( string tagName ) => TagStart . SkipAnd ( Terms . Text ( tagName ) ) . AndSkip ( TagEnd ) ;
578600
579601 public void RegisterIdentifierTag ( string tagName , Func < string , TextWriter , TextEncoder , TemplateContext , ValueTask < Completion > > render )
580602 {
0 commit comments