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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
public void TestLambdasEscaping() { object data = new { lambda = (Func <string>)(() => ">"), }; Dictionary <string, string> partials = null; var template = @"<{{lambda}}{{{lambda}}}"; var expected = @"<>>"; var actual = new MustacheRenderer().Render(template, data, partials); Assert.Equal(expected, actual); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }