Fix Bug with inline tags in compound tags
Whenever there was an inline tag in a compound tag, it would consume one too many chunks.
This commit is contained in:
parent
d7a0ab3b38
commit
65b79062d6
|
@ -1004,6 +1004,47 @@ Last";
|
||||||
Assert.AreEqual(expected, result, "The wrong text was generated.");
|
Assert.AreEqual(expected, result, "The wrong text was generated.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
[TestMethod]
|
||||||
|
public void TestCompile_Each_LoopOverCollectionTwice()
|
||||||
|
{
|
||||||
|
List<TestObject> objects = new List<TestObject>();
|
||||||
|
objects.Add(new TestObject { Name = "name1", Val = "val1" });
|
||||||
|
objects.Add(new TestObject { Name = "name2", Val = "val2" });
|
||||||
|
objects.Add(new TestObject { Name = "name3", Val = "val3" });
|
||||||
|
|
||||||
|
const string template = @"{{#each this}}
|
||||||
|
Item Number: {{#index}}<br />
|
||||||
|
{{/each}}
|
||||||
|
{{#each this}}
|
||||||
|
Item Number: foo<br />
|
||||||
|
|
||||||
|
{{/each}}";
|
||||||
|
|
||||||
|
FormatCompiler compiler = new FormatCompiler();
|
||||||
|
Generator generator = compiler.Compile(template);
|
||||||
|
string actual = generator.Render(objects);
|
||||||
|
|
||||||
|
const string expected = @"Item Number: 0<br />
|
||||||
|
Item Number: 1<br />
|
||||||
|
Item Number: 2<br />
|
||||||
|
Item Number: foo<br />
|
||||||
|
Item Number: foo<br />
|
||||||
|
Item Number: foo<br />
|
||||||
|
";
|
||||||
|
|
||||||
|
Assert.AreEqual(expected, actual, "The wrong text was found.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public class TestObject
|
||||||
|
{
|
||||||
|
public String Name { get; set; }
|
||||||
|
|
||||||
|
public String Val { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region With
|
#region With
|
||||||
|
|
|
@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
|
||||||
//
|
//
|
||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
[assembly: AssemblyVersion("0.1.2.0")]
|
[assembly: AssemblyVersion("0.1.3.0")]
|
||||||
[assembly: AssemblyFileVersion("0.1.2.0")]
|
[assembly: AssemblyFileVersion("0.1.3.0")]
|
||||||
|
|
|
@ -237,8 +237,7 @@ namespace Mustache
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
generator.AddStaticGenerators(trimmer.RecordText(leading, true, true));
|
generator.AddStaticGenerators(trimmer.RecordText(leading, true, true));
|
||||||
Match nextMatch = findNextTag(nextDefinition, format, formatIndex);
|
ArgumentCollection arguments = getArguments(nextDefinition, match);
|
||||||
ArgumentCollection arguments = getArguments(nextDefinition, nextMatch);
|
|
||||||
InlineGenerator inlineGenerator = new InlineGenerator(nextDefinition, arguments);
|
InlineGenerator inlineGenerator = new InlineGenerator(nextDefinition, arguments);
|
||||||
generator.AddGenerator(inlineGenerator);
|
generator.AddGenerator(inlineGenerator);
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,6 @@ using System.Runtime.CompilerServices;
|
||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("0.1.2.0")]
|
[assembly: AssemblyVersion("0.1.3.0")]
|
||||||
[assembly: AssemblyFileVersion("0.1.2.0")]
|
[assembly: AssemblyFileVersion("0.1.3.0")]
|
||||||
[assembly: InternalsVisibleTo("mustache-sharp.test")]
|
[assembly: InternalsVisibleTo("mustache-sharp.test")]
|
Loading…
Reference in New Issue