コード例 #1
0
        private HtmlStatement ParseHtml()
        {
            HtmlStatement node = new HtmlStatement(_curtok);

            Token  tok  = Peek();
            string data = _curtok.Data;

            switch (tok.TokenId)
            {
            case TokenId.RCurly:
            {
                int pos = data.LastIndexOf("\r\n");

                if (pos > 0)
                {
                    _curtok.Data = data.Substring(0, pos + 2);
                }

                break;
            }

            case TokenId.Dollar:
            {
                Token tok2 = Peek(_index + 1);

                if (tok2.TokenId == TokenId.If || tok2.TokenId == TokenId.For)
                {
                    Token tok3 = Search(TokenId.Html);

                    if (tok2.StartLocation.LineIndex != tok3.StartLocation.LineIndex)
                    {
                        data = _curtok.Data.TrimEnd(' ', '\t');

                        if (data.EndsWith("\r\n"))
                        {
                            _curtok.Data = data;
                        }
                    }
                }

                break;
            }
            }

            node.Expression = new StringPrimitive(_curtok);

            Advance();

            if (_curtok.TokenId == TokenId.Semi)
            {
                Advance();
            }

            return(node);
        }
コード例 #2
0
        private StatementNode ParseDollar()
        {
            Token last = _curtok;

            Advance();
            if (_curtok.TokenId == TokenId.Ident)
            {
                HtmlStatement node = new HtmlStatement(last);
                node.Expression = ParseExpression();
                return(node);
            }
            else
            {
                return(ParseStatement());
            }
        }
コード例 #3
0
ファイル: HtmlParser.cs プロジェクト: yslib/minimvc
        private HtmlStatement ParseHtml()
        {
            HtmlStatement node = new HtmlStatement(_curtok);

            Token tok = Peek();
            string data = _curtok.Data;

            switch (tok.TokenId)
            {
                case TokenId.RCurly:
                    {
                        int pos = data.LastIndexOf("\r\n");

                        if (pos > 0)
                            _curtok.Data = data.Substring(0, pos + 2);

                        break;
                    }
                case TokenId.Dollar:
                    {
                        Token tok2 = Peek(_index + 1);

                        if (tok2.TokenId == TokenId.If || tok2.TokenId == TokenId.For)
                        {
                            Token tok3 = Search(TokenId.Html);

                            if (tok2.StartLocation.LineIndex != tok3.StartLocation.LineIndex)
                            {
                                data = _curtok.Data.TrimEnd(' ', '\t');

                                if (data.EndsWith("\r\n"))
                                    _curtok.Data = data;
                            }
                        }

                        break;
                    }
            }

            node.Expression = new StringPrimitive(_curtok);

            Advance();

            if (_curtok.TokenId == TokenId.Semi)
                Advance();

            return node;
        }
コード例 #4
0
ファイル: HtmlParser.cs プロジェクト: yslib/minimvc
        private StatementNode ParseDollar()
        {
            Token last = _curtok;

            Advance();
            if (_curtok.TokenId == TokenId.Ident)
            {
                HtmlStatement node = new HtmlStatement(last);
                node.Expression = ParseExpression();
                return node;
            }
            else
            {
                return ParseStatement();
            }
        }