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));
        }
示例#2
0
		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);
		}