コード例 #1
0
ファイル: JadeParser.cs プロジェクト: mirannda/Jade4Net
 public JadeParser(String filename, TemplateLoader templateLoader) //throws IOException
 {
     this.filename       = filename;
     this.templateLoader = templateLoader;
     _jadeLexer          = new JadeLexer(filename, templateLoader);
     getContexts().AddLast(this);
 }
コード例 #2
0
ファイル: JadeParser.cs プロジェクト: rnrn/Jade4Net
 //throws IOException
 public JadeParser(String filename, TemplateLoader templateLoader)
 {
     this.filename = filename;
     this.templateLoader = templateLoader;
     _jadeLexer = new JadeLexer(filename, templateLoader);
     getContexts().AddLast(this);
 }
コード例 #3
0
ファイル: JadeParser.cs プロジェクト: bstoney/NJade
        /// <summary>
        /// Gets the jade template.
        /// </summary>
        /// <returns>A new jade template.</returns>
        public ITemplate Parse(string jade)
        {
            jade.CheckNull("jade");

            var lexer         = new JadeLexer(jade);
            var rawTokens     = new TokenStream(lexer.Tokenize());
            var elementParser = new ElementParser();

            var lines = rawTokens.GetLines();

            DocType docType  = null;
            var     elements = new List <JElement>();

            if (!lines.IsAtEnd())
            {
                var firstLine = lines.Current;
                if (firstLine.Is(JadeTokenType.Doctype))
                {
                    firstLine.Consume();
                    firstLine.GetAny(TokenType.WhiteSpace);
                    docType = new DocType(firstLine.GetAny(TokenType.Word));
                    lines.Consume();
                }

                while (!lines.IsAtEnd())
                {
                    elementParser.ParseNextElement(lines).Do(elements.Add);
                }
            }

            return(new Template(docType, elements));
        }
コード例 #4
0
ファイル: JadeLexerTest.cs プロジェクト: rnrn/Jade4Net
        //throws Exception
        public JadeLexerTest()
        {
            FileTemplateLoader loader1 = new FileTemplateLoader(TestFileHelper.getLexerResourcePath(""), "UTF-8");
            lexer1 = new JadeLexer("test_file1.jade", loader1);

            FileTemplateLoader loader2 = new FileTemplateLoader(TestFileHelper.getLexerResourcePath(""), "UTF-8");
            lexer2 = new JadeLexer("empty_file.jade", loader2);
        }
コード例 #5
0
ファイル: JadeLexerTests.cs プロジェクト: bstoney/NJade
        public void ShouldNormalizeSourceWhenConstructingAJadeLexer()
        {
            var jadeLexerUnnomalized = new JadeLexer("A \r\n unnormalized \r\n string");
            var tokensUnnormalized   = jadeLexerUnnomalized.Tokenize().ToArray();
            var jadeLexerNomalized   = new JadeLexer("A \n unnormalized \n string");
            var tokensNormalized     = jadeLexerNomalized.Tokenize().ToArray();

            CollectionAssert.AreEqual(tokensNormalized, tokensUnnormalized);
        }
コード例 #6
0
        public JadeLexerTest() //throws Exception
        {
            FileTemplateLoader loader1 = new FileTemplateLoader(TestFileHelper.getLexerResourcePath(""), "UTF-8");

            lexer1 = new JadeLexer("test_file1.jade", loader1);

            FileTemplateLoader loader2 = new FileTemplateLoader(TestFileHelper.getLexerResourcePath(""), "UTF-8");

            lexer2 = new JadeLexer("empty_file.jade", loader2);
        }
コード例 #7
0
ファイル: JadeCompiler.cs プロジェクト: 0xFireball/KJade
        public IJadeCompileResult Compile(string input)
        {
            var lexer = new JadeLexer();

            lexer = new JadeLexer();
            var tokens = lexer.ReadCode(input);
            var parser = new JadeParser();
            var ast    = parser.ParseTokens(tokens);

            return(CompileFromAst(ast));
        }