void IDocumentParser.Execute(RazorParser parser)
        {
            _parser = parser;
            var prevIndex = _parser.charIndex - 1;
            var prevChar  = _parser.GetCharacterAtIndex(prevIndex);

            if (prevChar == RazorParser.QuoteChr || prevChar == RazorParser.SingleQuoteChr)
            {
                _parser.WriteHtml(RazorParser.TagStartChr);
                return;
            }
            var textIndex = _parser.FindNextChars(_parser.charIndex, RazorParser.TextTag);

            _tcounter = 1;
            if (textIndex > -1)
            {
                _parser.charIndex = textIndex;
                _textMode         = true;
                _parser.StartViewResponse();
            }
            else
            {
                _parser.charIndex++;
                if (NeedViewResponse())
                {
                    _parser.StartViewResponse();
                }
                _buffer.Append(RazorParser.TagStartChr);
            }
            _parser.ProcessBlock(Process);
        }
Exemplo n.º 2
0
 private void Parse()
 {
     if (_blockType == BlockType.Code)
     {
         _parser.ProcessBlock(HandleCodeBlock);
     }
     else if (_blockType == BlockType.Text)
     {
         _parser.StartViewResponse();
         _parser.ProcessBlock(HandleText);
     }
     else if (_blockType == BlockType.ExplicitExpression)
     {
         _parser.ProcessBlock(HandleExplicitExpression);
     }
     else if (_blockType == BlockType.Expression)
     {
         _parser.ProcessBlock(HandleExpressionBlock);
     }
     else if (_blockType == BlockType.If)
     {
         MoveToBlockStart();
         _parser.ProcessBlock(HandleIfExpression);
     }
     else if (_blockType == BlockType.Helper)
     {
         MoveToBlockStart();
         _parser.StartViewResponseForHelper();
         _parser.ProcessBlock(HandleHelperBlock);
     }
     else if (_blockType == BlockType.For || _blockType == BlockType.Switch || _blockType == BlockType.While || _blockType == BlockType.With)
     {
         MoveToBlockStart();
         _parser.ProcessBlock(HandleCodeBlock);
         _parser.WriteCode(RazorParser.BlockEndBrace);
     }
     else if (_blockType == BlockType.Comment)
     {
         _parser.ProcessBlock(HandleComment);
     }
     else if (_blockType == BlockType.DoWhile)
     {
         _parser.ProcessBlock(HandleDoWhileExpression);
     }
 }