コード例 #1
0
ファイル: Program.cs プロジェクト: anthrax3/dcg
        internal static void Main(string[] args)
        {
            AtTemplate template = new AtTemplate("numbers.al", (Encoding)null);

            template.Debug = true;

            try
            {
                template.Parse();

                template.Context = new object[] { 5 };

                Console.WriteLine(template.Render());
            }
            catch (TemplateParsingException ex)
            {
                Console.Write("A parsing error at line ");
                Console.WriteLine(ex.SourceLine);

                Console.WriteLine(ex.Message);
            }
            catch (TemplateCompilationException ex)
            {
                Console.WriteLine(ex.ToString());
            }
            catch (TemplateRuntimeException ex)
            {
                Console.WriteLine(ex);
            }

            Console.ReadLine();
        }
コード例 #2
0
ファイル: AtTemplateTest.cs プロジェクト: anthrax3/dcg
        public void GlobalLineLocation()
        {
            AtTemplate template = new AtTemplate(
                @"@# line 1
@global
string b;
int a = 1;
@end_global
@
@global
c = 1;
@end_global");

            template.Debug = true;

            try
            {
                template.Parse();
                Assert.Fail();
            }
            catch (TemplateCompilationException ex)
            {
                Assert.AreEqual(8, ex.Errors[0].Line);
            }
        }
コード例 #3
0
ファイル: AtTemplateTest.cs プロジェクト: anthrax3/dcg
        public void InnerMultiOutput()
        {
            AtTemplate template = new AtTemplate(
                @"@output page2
<html>
    <br/>
    @! for (int i = 1; i <= 3; i++) {
      @output page3
      Just kidding.
        @code
          for (int j = 1; j < 3; j++) {
            @text
            page3
              @output page4
              OK
              @end_output
            @end_text
          }
        @end_code
      @end_output
    @! }
</html>
@end_output");

            template.Parse();

            Dictionary <string, TextWriter> outputs =
                new Dictionary <string, TextWriter>();

            outputs.Add(AtTemplate.MainOutputKey, new StringWriter());
            outputs.Add("page2", new StringWriter());
            outputs.Add("page3", new StringWriter());
            outputs.Add("page4", new StringWriter());

            template.Render(outputs);

            Assert.AreEqual(@"<html>
    <br/>
</html>
", outputs["page2"].ToString());

            Assert.AreEqual(@"Just kidding.
  page3
  page3
Just kidding.
  page3
  page3
Just kidding.
  page3
  page3
", outputs["page3"].ToString());

            Assert.AreEqual(@"OK
OK
OK
OK
OK
OK
", outputs["page4"].ToString());
        }
コード例 #4
0
ファイル: AtTemplateTest.cs プロジェクト: anthrax3/dcg
        public void SectionReferenceWithinAnOutput()
        {
            AtTemplate template = new AtTemplate(
                @"@output o\1
    @+ Outer
@end_output
@section Outer ()
line1
    @+ inner
@end_section
@section inner
inner line
@end_section");

            template.Parse();

            IDictionary <string, TextWriter> writers = new Dictionary <string, TextWriter>()
            {
                { AtTemplate.MainOutputKey, new StringWriter() },
                { "o\\1", new StringWriter() }
            };

            template.Render(writers);

            Assert.That(
                writers["o\\1"].ToString(),
                Is.EqualTo("    line1\r\n        inner line\r\n"));
        }
コード例 #5
0
ファイル: AtTemplateTest.cs プロジェクト: anthrax3/dcg
        public void TextLine()
        {
            AtTemplate template = new AtTemplate("line 1\r\nline 2");

            template.Parse();

            Assert.AreEqual("line 1\r\nline 2\r\n", template.Render());
        }
コード例 #6
0
ファイル: AtTemplateTest.cs プロジェクト: anthrax3/dcg
 public void NothingToParse()
 {
     using (IAtTemplate template = new AtTemplate(""))
     {
         template.Parse();
         Assert.IsEmpty(template.Render());
     }
 }
コード例 #7
0
ファイル: AtTemplateTest.cs プロジェクト: anthrax3/dcg
        public void Compiler35()
        {
            AtTemplate template = new AtTemplate(
                @"@reference System.Core.dll
", "v3.5");

            template.Parse();
        }
コード例 #8
0
ファイル: AtTemplateTest.cs プロジェクト: anthrax3/dcg
        public void SimpleSectionReference(string code)
        {
            AtTemplate template = new AtTemplate(code);

            template.Parse();

            Assert.That(template.Render(), Is.EqualTo("Hello DCG\r\n"));
        }
コード例 #9
0
ファイル: AtTemplateTest.cs プロジェクト: anthrax3/dcg
        public void Compiler20()
        {
            AtTemplate template = new AtTemplate(
                @"@reference System.Data.dll
", "v2.0");

            template.Parse();
        }
コード例 #10
0
ファイル: AtTemplateTest.cs プロジェクト: anthrax3/dcg
        public void Compiler20_35Reference()
        {
            AtTemplate template = new AtTemplate(
                @"@reference System.Core.dll
", "v2.0");

            template.Parse();
        }
コード例 #11
0
ファイル: AtTemplateTest.cs プロジェクト: anthrax3/dcg
        public void EmptyLine()
        {
            AtTemplate template = new AtTemplate("\r\n");

            template.Parse();

            Assert.AreEqual("\r\n", template.Render());
        }
コード例 #12
0
ファイル: AtTemplateTest.cs プロジェクト: anthrax3/dcg
        public void LineEnding(string lineEnding)
        {
            AtTemplate template = new AtTemplate(
                string.Format("line1{0}line2", lineEnding));

            template.Parse();

            Assert.That(template.Render(), Is.EqualTo(string.Format("line1{0}line2{0}", lineEnding)));
        }
コード例 #13
0
ファイル: GeneralUse.cs プロジェクト: anthrax3/dcg
        public void GenerateAssembly()
        {
            ITemplate template =
                new AtTemplate(TemplateFile, Encoding.Default);

            template.Parse();

            Assert.IsNotNull(template.GeneratedAssemblyPath);
        }
コード例 #14
0
ファイル: AtTemplateTest.cs プロジェクト: anthrax3/dcg
        public void StaticEscaping()
        {
            AtTemplate template = new AtTemplate(
                "@@reference System.dll\r\n");

            template.Parse();

            Assert.AreEqual("@reference System.dll\r\n", template.Render());
        }
コード例 #15
0
ファイル: AtTemplateTest.cs プロジェクト: anthrax3/dcg
        public void MultilineEvaluation()
        {
            AtTemplate template = new AtTemplate(
                "    @= \"line1\\r\\nline2\"");

            template.Parse();

            Assert.AreEqual("    line1\r\n    line2\r\n", template.Render());
        }
コード例 #16
0
        internal static void Main(string[] args)
        {
            AtTemplate template = new AtTemplate("capitalize.al", (Encoding)null);

            template.Parse();

            Console.WriteLine(template.Render());
            Console.ReadLine();
        }
コード例 #17
0
ファイル: AtTemplateTest.cs プロジェクト: anthrax3/dcg
        public void EmptyOutputKey()
        {
            AtTemplate template = new AtTemplate(
                @"main output
@output
something
@end_output");

            template.Parse();
        }
コード例 #18
0
ファイル: GeneralUse.cs プロジェクト: anthrax3/dcg
        public void SimpleRender()
        {
            ITemplate template =
                new AtTemplate(TemplateFile, Encoding.Default);

            template.Parse();

            template.Context = new object[] { "arg1", "arg2" };

            Assert.AreEqual("1 + 1 = 2\r\n", template.Render());
        }
コード例 #19
0
ファイル: AtTemplateTest.cs プロジェクト: anthrax3/dcg
        public void FakeWhiteSpace()
        {
            AtTemplate template = new AtTemplate(
                @"line1@@@@
,line1 too
");

            template.Parse();

            Assert.AreEqual("line1@@\r\n,line1 too\r\n", template.Render());
        }
コード例 #20
0
ファイル: AtTemplateTest.cs プロジェクト: anthrax3/dcg
        public void Comment()
        {
            AtTemplate template = new AtTemplate(
                @"@# sample line 1
@# sample line 2
");

            template.Parse();

            Assert.AreEqual(0, template.Render().Length);
        }
コード例 #21
0
ファイル: GeneralUse.cs プロジェクト: anthrax3/dcg
        public void GenerateSourceCodeWithDebug()
        {
            ITemplate template =
                new AtTemplate(TemplateFile, Encoding.Default);

            template.Debug = true;

            template.Parse();

            Console.WriteLine(template.SourceCode);
        }
コード例 #22
0
        internal static void Main(string[] args)
        {
            string templateContent = "@! string name = \"Cavingdeep\";\r\n"
                                     + "Hello @(name).";
            AtTemplate template = new AtTemplate(templateContent);

            template.Parse();

            Console.WriteLine(template.Render());
            Console.ReadLine();
        }
コード例 #23
0
ファイル: Program.cs プロジェクト: anthrax3/dcg
        internal static void Main(string[] args)
        {
            AtTemplate template = new AtTemplate("numbers.al", (Encoding)null);

            template.Parse();

            template.Context = new object[] { 5 };

            Console.WriteLine(template.Render());
            Console.ReadLine();
        }
コード例 #24
0
ファイル: AtTemplateTest.cs プロジェクト: anthrax3/dcg
        public void SectionReferenceWithParameters()
        {
            AtTemplate template = new AtTemplate(
                @"@! string name = ""Seth"";
@+ SayHello(name)
@section SayHello(name : string)
Hello @(name)
@end_section");

            template.Parse();

            Assert.That(template.Render(), Is.EqualTo("Hello Seth\r\n"));
        }
コード例 #25
0
ファイル: AtTemplateTest.cs プロジェクト: anthrax3/dcg
        public void SectionReferenceWithIndentation()
        {
            AtTemplate template = new AtTemplate(
                @"    @+ SayHello
@section SayHello  
line1
line2
@end_section");

            template.Parse();

            Assert.That(template.Render(), Is.EqualTo("    line1\r\n    line2\r\n"));
        }
コード例 #26
0
        internal static void Main(string[] args)
        {
            AtTemplate template = new AtTemplate("class.al", (Encoding)null);

            template.Parse();

            template.Context = new object[]
            {
                "SampleClass", 5, new string[] { "id", "name" }
            };

            Console.WriteLine(template.Render());
            Console.ReadLine();
        }
コード例 #27
0
ファイル: AtTemplateTest.cs プロジェクト: anthrax3/dcg
        public void CodeDirective()
        {
            AtTemplate template = new AtTemplate(
                @"line 1
@code
Dcg.Write(""line 2\r\n"");
@end_code
line 3");

            template.Parse();

            Assert.AreEqual("line 1\r\nline 2\r\nline 3\r\n",
                            template.Render());
        }
コード例 #28
0
ファイル: AtTemplateTest.cs プロジェクト: anthrax3/dcg
        public void MultilineEvaluationWithParentIndentation()
        {
            AtTemplate template = new AtTemplate(
                @"line
    @code
        @text
        @= ""line1\r\nline2""
        @end_text
    @end_code");

            template.Parse();

            Assert.AreEqual("line\r\n    line1\r\n    line2\r\n", template.Render());
        }
コード例 #29
0
ファイル: Program.cs プロジェクト: anthrax3/dcg
        internal static void Main(string[] args)
        {
            AtTemplate template = new AtTemplate("person.al", (Encoding)null);

            template.Parse();

            template.Context = new object[]
            {
                new Person("Seth", "Yuan", 24, Gender.Male)
            };

            Console.WriteLine(template.Render());
            Console.ReadLine();
        }
コード例 #30
0
ファイル: AtTemplateTest.cs プロジェクト: anthrax3/dcg
        public void LineEndHandlingWithIndentation()
        {
            AtTemplate template = new AtTemplate(
                @"    @code
    @text
    line1@
    continuation
    @end_text
@end_code");

            template.Parse();

            Assert.That(template.Render(), Is.EqualTo("    line1continuation\r\n"));
        }