Esempio n. 1
0
        public void MustacheRenderer_RenderConditionalTagOnFileName()
        {
            var files = new List <TemplateFile> {
                new TemplateFile
                {
                    Name    = "file{{cond1}}",
                    Content = ""
                },
                new TemplateFile
                {
                    Name    = "file{{cond1}}/subfile",
                    Content = ""
                }
            };

            var tags = new Dictionary <string, object>
            {
                { "cond1", true }
            };

            var sut    = new MustacheRenderer();
            var result = sut.Render(files, tags);

            Assert.IsTrue(result.Any(x => x.Name == "file"));
            Assert.IsTrue(result.Any(x => x.Name == "file/subfile"));
        }
        public void TestDelimitersInvertedSections()
        {
            object data = new { section = false, data = @"I got interpolated.", };
            Dictionary <string, string> partials = null;
            var template = @"[
{{^section}}
  {{data}}
  |data|
{{/section}}

{{= | | =}}
|^section|
  {{data}}
  |data|
|/section|
]
";
            var expected = @"[
  I got interpolated.
  |data|

  {{data}}
  I got interpolated.
]
";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
Esempio n. 3
0
        public void MustacheRenderer_RenderTag()
        {
            var files = new List <TemplateFile> {
                new TemplateFile
                {
                    Name    = "file1",
                    Content = "Greetings {{firstName}} {{lastName}}!"
                },
                new TemplateFile
                {
                    Name    = "file2",
                    Content = "How can I help, {{firstName}}?"
                },
                new TemplateFile
                {
                    Name    = "{{file3__upper}}",
                    Content = "{{firstName__lower}} {{lastName__upper}}"
                }
            };

            var tags = new Dictionary <string, object>
            {
                { "firstName", "John" },
                { "lastName", "Doe" },
                { "file3", "filename3" }
            };

            var sut    = new MustacheRenderer();
            var result = sut.Render(files, tags);

            Assert.AreEqual("Greetings John Doe!", result.FirstOrDefault(x => x.Name == "file1").Content);
            Assert.AreEqual("How can I help, John?", result.FirstOrDefault(x => x.Name == "file2").Content);
            Assert.AreEqual("john DOE", result.FirstOrDefault(x => x.Name == "FILENAME3").Content);
        }
Esempio n. 4
0
        public void TestPartialsStandaloneIndentation()
        {
            object data     = new { content = @"<
->", };
            var    partials = new Dictionary <string, string>()
            {
                { @"partial", @"|
{{{content}}}
|
" },
            };
            var template = @"\
 {{>partial}}
/
";
            var expected = @"\
 |
 <
->
 |
/
";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
Esempio n. 5
0
        public void MustacheRenderer_RenderConditionalTag()
        {
            var files = new List <TemplateFile> {
                new TemplateFile
                {
                    Name    = "file1",
                    Content = "You chose {{#cond1}}One{{/cond1}}{{#cond2}}Two{{/cond2}}"
                },
                new TemplateFile
                {
                    Name    = "file2",
                    Content = "You did not choose {{^cond1}}One{{/cond1}}{{^cond2}}Two{{/cond2}}"
                }
            };

            var tags = new Dictionary <string, object>
            {
                { "cond1", true },
                { "cond2", false }
            };

            var sut    = new MustacheRenderer();
            var result = sut.Render(files, tags);

            Assert.AreEqual("You chose One", result.FirstOrDefault(x => x.Name == "file1").Content);
            Assert.AreEqual("You did not choose Two", result.FirstOrDefault(x => x.Name == "file2").Content);
        }
Esempio n. 6
0
        public void TestLambdasInvertedSection()
        {
            object data = new { lambda = (Func <string, bool>)(txt => false), static_ = @"static", };
            Dictionary <string, string> partials = null;
            var template = @"<{{^lambda}}{{static_}}{{/lambda}}>";
            var expected = @"<>";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
        public void TestDelimitersSpecialCharacters()
        {
            object data = new { text = @"It worked!", };
            Dictionary <string, string> partials = null;
            var template = @"({{=[ ]=}}[text])";
            var expected = @"(It worked!)";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
Esempio n. 8
0
        public void TestSectionsFalsey()
        {
            object data = new { boolean = false, };
            Dictionary <string, string> partials = null;
            var template = @"""{{#boolean}}This should not be rendered.{{/boolean}}""";
            var expected = @"""""";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
Esempio n. 9
0
        public void TestSectionsDottedNamesBrokenChains()
        {
            object data = new { a = new {}, };
            Dictionary <string, string> partials = null;
            var template = @"""{{#a.b.c}}Here{{/a.b.c}}"" == """"";
            var expected = @""""" == """"";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
Esempio n. 10
0
        public void TestSectionsImplicitIteratorDecimal()
        {
            object data = new { list = new object[] { 1.1, 2.2, 3.3, 4.4, 5.5, }, };
            Dictionary <string, string> partials = null;
            var template = @"""{{#list}}({{.}}){{/list}}""";
            var expected = @"""(1.1)(2.2)(3.3)(4.4)(5.5)""";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
Esempio n. 11
0
        public void TestSectionsContextMisses()
        {
            object data = null;
            Dictionary <string, string> partials = null;
            var template = @"[{{#missing}}Found key 'missing'!{{/missing}}]";
            var expected = @"[]";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
Esempio n. 12
0
        public void TestSectionsEmptyList()
        {
            object data = new { list = new object[] {}, };
            Dictionary <string, string> partials = null;
            var template = @"""{{#list}}Yay lists!{{/list}}""";
            var expected = @"""""";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
Esempio n. 13
0
        public void TestInvertedDottedNamesFalsey()
        {
            object data = new { a = new { b = new { c = false, }, }, };
            Dictionary <string, string> partials = null;
            var template = @"""{{^a.b.c}}Not Here{{/a.b.c}}"" == ""Not Here""";
            var expected = @"""Not Here"" == ""Not Here""";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
Esempio n. 14
0
        public void TestLambdasSectionMultipleCalls()
        {
            object data = new { lambda = (Func <string, string>)(txt => "__" + txt + "__"), };
            Dictionary <string, string> partials = null;
            var template = @"{{#lambda}}FILE{{/lambda}} != {{#lambda}}LINE{{/lambda}}";
            var expected = @"__FILE__ != __LINE__";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
Esempio n. 15
0
        public void TestLambdasSectionAlternateDelimiters()
        {
            object data = new { planet = @"Earth", lambda = (Func <string, string>)(txt => txt + "{{planet}} => |planet|" + txt), };
            Dictionary <string, string> partials = null;
            var template = @"{{= | | =}}<|#lambda|-|/lambda|>";
            var expected = @"<-{{planet}} => Earth->";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
Esempio n. 16
0
        public void TestInterpolationAmpersandWithPadding()
        {
            object data = new { string_ = @"---", };
            Dictionary <string, string> partials = null;
            var template = @"|{{& string_ }}|";
            var expected = @"|---|";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
Esempio n. 17
0
        public void TestInterpolationTripleMustacheSurroundingWhitespace()
        {
            object data = new { string_ = @"---", };
            Dictionary <string, string> partials = null;
            var template = @"| {{{string_}}} |";
            var expected = @"| --- |";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
Esempio n. 18
0
        public void TestInterpolationDottedNamesInitialResolution()
        {
            object data = new { a = new { b = new { c = new { d = new { e = new { name = @"Phil", }, }, }, }, }, b = new { c = new { d = new { e = new { name = @"Wrong", }, }, }, }, };
            Dictionary <string, string> partials = null;
            var template = @"""{{#a}}{{b.c.d.e.name}}{{/a}}"" == ""Phil""";
            var expected = @"""Phil"" == ""Phil""";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
Esempio n. 19
0
        public void TestSectionsList()
        {
            object data = new { list = new object[] { new { item = 1, }, new { item = 2, }, new { item = 3, }, }, };
            Dictionary <string, string> partials = null;
            var template = @"""{{#list}}{{item}}{{/list}}""";
            var expected = @"""123""";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
Esempio n. 20
0
        public void TestLambdasInterpolationExpansion()
        {
            object data = new { planet = @"world", lambda = (Func <string>)(() => "{{planet}}"), };
            Dictionary <string, string> partials = null;
            var template = @"Hello, {{lambda}}!";
            var expected = @"Hello, world!";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
Esempio n. 21
0
        public void TestSectionsNestedFalsey()
        {
            object data = new { bool_ = false, };
            Dictionary <string, string> partials = null;
            var template = @"| A {{#bool_}}B {{#bool_}}C{{/bool_}} D{{/bool_}} E |";
            var expected = @"| A  E |";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
Esempio n. 22
0
        public void TestLambdasEscaping()
        {
            object data = new { lambda = (Func <string>)(() => ">"), };
            Dictionary <string, string> partials = null;
            var template = @"<{{lambda}}{{{lambda}}}";
            var expected = @"<&gt;>";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
Esempio n. 23
0
        public void TestSectionsImplicitIteratorString()
        {
            object data = new { list = new object[] { @"a", @"b", @"c", @"d", @"e", }, };
            Dictionary <string, string> partials = null;
            var template = @"""{{#list}}({{.}}){{/list}}""";
            var expected = @"""(a)(b)(c)(d)(e)""";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
Esempio n. 24
0
        public void TestLambdasSection()
        {
            object data = new { x = @"Error!", lambda = (Func <string, string>)(s => (s == "{{x}}") ? "yes" : "no"), };
            Dictionary <string, string> partials = null;
            var template = @"<{{#lambda}}{{x}}{{/lambda}}>";
            var expected = @"<yes>";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
Esempio n. 25
0
        public void TestSectionsImplicitIteratorArray()
        {
            object data = new { list = new object[] { new object[] { 1, 2, 3, }, new object[] { @"a", @"b", @"c", }, }, };
            Dictionary <string, string> partials = null;
            var template = @"""{{#list}}({{#.}}{{.}}{{/.}}){{/list}}""";
            var expected = @"""(123)(abc)""";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
Esempio n. 26
0
        public void TestLambdasSectionExpansion()
        {
            object data = new { planet = @"Earth", lambda = (Func <string, string>)(txt => txt + "{{planet}}" + txt), };
            Dictionary <string, string> partials = null;
            var template = @"<{{#lambda}}-{{/lambda}}>";
            var expected = @"<-Earth->";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
Esempio n. 27
0
        public void TestSectionsPadding()
        {
            object data = new { boolean = true, };
            Dictionary <string, string> partials = null;
            var template = @"|{{# boolean }}={{/ boolean }}|";
            var expected = @"|=|";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
Esempio n. 28
0
        public void TestDelimitersPairBehavior()
        {
            object data = new { text = @"Hey!", };
            Dictionary <string, string> partials = null;
            var template = @"{{=<% %>=}}(<%text%>)";
            var expected = @"(Hey!)";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
Esempio n. 29
0
        public void TestSectionsContext()
        {
            object data = new { context = new { name = @"Joe", }, };
            Dictionary <string, string> partials = null;
            var template = @"""{{#context}}Hi {{name}}.{{/context}}""";
            var expected = @"""Hi Joe.""";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }
Esempio n. 30
0
        public void TestDelimitersPairWithPadding()
        {
            object data = null;
            Dictionary <string, string> partials = null;
            var template = @"|{{= @   @ =}}|";
            var expected = @"||";
            var actual   = new MustacheRenderer().Render(template, data, partials);

            Assert.Equal(expected, actual);
        }