public override State PushChar(char c, IParseContext context, ref string rollback) { if (context.CurrentStateLength == 1) { bracketsBuilder.Clear(); var block = context.Nodes.FirstOrDefault(n => n is RazorCodeBlock); if (block == null) { var razorBlock = new RazorCodeBlock(context.LocationMinus(2)); context.Nodes.Push(razorBlock); CorrespondingBlock = razorBlock; } else { CorrespondingBlock = block as RazorCodeFragment; } } switch (c) { case '{': return(ParseOpeningBracket(c, context)); case '}': return(ParseClosingBracket <RazorCodeBlock> (c, context, Parent)); } return(base.PushChar(c, context, ref rollback)); }
public override State PushChar (char c, IParseContext context, ref string rollback) { if (context.CurrentStateLength == 1) { bracketsBuilder.Clear (); var block = context.Nodes.FirstOrDefault (n => n is RazorCodeBlock); if (block == null) { var razorBlock = new RazorCodeBlock (context.LocationMinus (2)); context.Nodes.Push (razorBlock); CorrespondingBlock = razorBlock; } else CorrespondingBlock = block as RazorCodeFragment; } switch (c) { case '{': return ParseOpeningBracket (c, context); case '}': return ParseClosingBracket<RazorCodeBlock> (c, context, Parent); } return base.PushChar (c, context, ref rollback); }