Skip to content

Commit 0a69175

Browse files
authored
Merge pull request #13 from Amberg/workitems/ReadmeFix
fix in documentation
2 parents 4347270 + 8b25a8d commit 0a69175

File tree

8 files changed

+45
-36
lines changed

8 files changed

+45
-36
lines changed

DocxTemplater.Images/DocxTemplater.Images.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<PrivateAssets>all</PrivateAssets>
99
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1010
</PackageReference>
11-
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.2" />
11+
<PackageReference Include="SixLabors.ImageSharp" Version="3.1.4" />
1212
</ItemGroup>
1313
<ItemGroup>
1414
<ProjectReference Include="..\DocxTemplater\DocxTemplater.csproj" />

DocxTemplater.Test/DocxTemplateTest.cs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ public void ImplicitIterator()
159159
docTemplate.BindModel("ds", model);
160160
var result = docTemplate.Process();
161161
docTemplate.Validate();
162-
Assert.IsNotNull(result);
162+
Assert.That(result, Is.Not.Null);
163163
// check result text
164164
var document = WordprocessingDocument.Open(result, false);
165165
var body = document.MainDocumentPart.Document.Body;
@@ -183,7 +183,7 @@ public string DateTimeFormatterTest(string format)
183183

184184
var result = docTemplate.Process();
185185
docTemplate.Validate();
186-
Assert.IsNotNull(result);
186+
Assert.That(result, Is.Not.Null);
187187
// check result text
188188
var document = WordprocessingDocument.Open(result, false);
189189
var body = document.MainDocumentPart.Document.Body;
@@ -208,14 +208,14 @@ public void HtmlIsAlwaysEnclosedWithHtmlTags(string html, string expexted)
208208

209209
var result = docTemplate.Process();
210210
docTemplate.Validate();
211-
Assert.IsNotNull(result);
211+
Assert.That(result, Is.Not.Null);
212212
result.SaveAsFileAndOpenInWord();
213213
result.Position = 0;
214214
var document = WordprocessingDocument.Open(result, false);
215215
// check word contains altChunk
216216
var body = document.MainDocumentPart.Document.Body;
217217
var altChunk = body.Descendants<AltChunk>().FirstOrDefault();
218-
Assert.IsNotNull(altChunk);
218+
Assert.That(result, Is.Not.Null);
219219
// extract html part
220220
var htmlPart = document.MainDocumentPart.GetPartById(altChunk.Id);
221221
var stream = htmlPart.GetStream();
@@ -238,7 +238,7 @@ public void InsertHtmlInLoop()
238238
docTemplate.BindModel("Items", new[] { "<h1>Test1</h1>", "<h1>Test2</h1>" });
239239
var result = docTemplate.Process();
240240
docTemplate.Validate();
241-
Assert.IsNotNull(result);
241+
Assert.That(result, Is.Not.Null);
242242
result.SaveAsFileAndOpenInWord();
243243
// check document contains 2 altChunks
244244
var document = WordprocessingDocument.Open(result, false);
@@ -262,7 +262,7 @@ public void InsertTextWithNewline()
262262
docTemplate.BindModel("ds", "FirstLine\r\nSecondLine\nThirdLine");
263263
var result = docTemplate.Process();
264264
docTemplate.Validate();
265-
Assert.IsNotNull(result);
265+
Assert.That(result, Is.Not.Null);
266266
// check document contains newline
267267
var document = WordprocessingDocument.Open(result, false);
268268
var body = document.MainDocumentPart.Document.Body;
@@ -292,7 +292,7 @@ public void ConditionalBlockInLoop()
292292
});
293293
var result = docTemplate.Process();
294294
docTemplate.Validate();
295-
Assert.IsNotNull(result);
295+
Assert.That(result, Is.Not.Null);
296296
// validate content
297297
var document = WordprocessingDocument.Open(result, false);
298298
var body = document.MainDocumentPart.Document.Body;
@@ -313,7 +313,7 @@ public void NullValueHandlingForNesteObjects()
313313
docTemplate.BindModel("ds", new { Model = new { Outer = (LessonReportModel)null } });
314314
var result = docTemplate.Process();
315315
docTemplate.Validate();
316-
Assert.IsNotNull(result);
316+
Assert.That(result, Is.Not.Null);
317317
var document = WordprocessingDocument.Open(result, false);
318318
var body = document.MainDocumentPart.Document.Body;
319319
//check values have been replaced
@@ -358,7 +358,7 @@ public void LoopStartAndEndTagsAreRemoved()
358358
docTemplate.BindModel("ds", new { Items = new[] { new { Name = "Item1", Price = 5 }, new { Name = "Item2", Price = 7 } } });
359359
var result = docTemplate.Process();
360360
docTemplate.Validate();
361-
Assert.IsNotNull(result);
361+
Assert.That(result, Is.Not.Null);
362362
result.Position = 0;
363363
result.SaveAsFileAndOpenInWord();
364364
result.Position = 0;
@@ -382,7 +382,7 @@ public void CollectionSeparatorTest()
382382
docTemplate.BindModel("ds", new[] { "Item1", "Item2", "Item3" });
383383
var result = docTemplate.Process();
384384
docTemplate.Validate();
385-
Assert.IsNotNull(result);
385+
Assert.That(result, Is.Not.Null);
386386
// check result text
387387
var document = WordprocessingDocument.Open(result, false);
388388
var body = document.MainDocumentPart.Document.Body;
@@ -413,7 +413,7 @@ public void ConditionsWithAndWithoutPrefix()
413413
docTemplate.BindModel("ds4", new { MyBool = false });
414414
var result = docTemplate.Process();
415415
docTemplate.Validate();
416-
Assert.IsNotNull(result);
416+
Assert.That(result, Is.Not.Null);
417417
result.Position = 0;
418418
result.SaveAsFileAndOpenInWord();
419419
result.Position = 0;
@@ -456,7 +456,7 @@ public void BindToMultipleModels()
456456

457457
var result = docTemplate.Process();
458458
docTemplate.Validate();
459-
Assert.IsNotNull(result);
459+
Assert.That(result, Is.Not.Null);
460460
result.Position = 0;
461461

462462
var document = WordprocessingDocument.Open(result, false);
@@ -482,7 +482,7 @@ public void ReplaceTextBoldIsPreserved()
482482
docTemplate.BindModel("Property1", "Replaced");
483483
var result = docTemplate.Process();
484484
docTemplate.Validate();
485-
Assert.IsNotNull(result);
485+
Assert.That(result, Is.Not.Null);
486486
result.Position = 0;
487487

488488
var document = WordprocessingDocument.Open((Stream)result, false);
@@ -511,7 +511,7 @@ public string CultureIsAppliedTest(string formatter, CultureInfo culture, object
511511
docTemplate.BindModel("var", value);
512512
var result = docTemplate.Process();
513513
docTemplate.Validate();
514-
Assert.IsNotNull(result);
514+
Assert.That(result, Is.Not.Null);
515515
result.Position = 0;
516516

517517
var document = WordprocessingDocument.Open(result, false);
@@ -585,7 +585,7 @@ public void BindCollection()
585585
docTemplate.BindModel("company", new { Name = "X" });
586586
var result = docTemplate.Process();
587587
docTemplate.Validate();
588-
Assert.IsNotNull(result);
588+
Assert.That(result, Is.Not.Null);
589589
result.Position = 0;
590590

591591
var document = WordprocessingDocument.Open(result, false);
@@ -655,7 +655,7 @@ public void BindCollectionToTable()
655655
});
656656
var result = docTemplate.Process();
657657
docTemplate.Validate();
658-
Assert.IsNotNull(result);
658+
Assert.That(result, Is.Not.Null);
659659
result.Position = 0;
660660
// result.SaveAsFileAndOpenInWord();
661661
var document = WordprocessingDocument.Open(result, false);

DocxTemplater.Test/DocxTemplater.Test.csproj

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,17 @@
1111
</PropertyGroup>
1212
<ItemGroup>
1313
<PackageReference Include="AutoBogus" Version="2.13.1" />
14-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.6.0" />
15-
<PackageReference Include="NUnit" Version="3.13.3" />
16-
<PackageReference Include="NUnit3TestAdapter" Version="4.2.1" />
17-
<PackageReference Include="NUnit.Analyzers" Version="3.6.1" />
18-
<PackageReference Include="coverlet.collector" Version="6.0.0" />
14+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
15+
<PackageReference Include="NUnit" Version="4.1.0" />
16+
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0" />
17+
<PackageReference Include="NUnit.Analyzers" Version="4.2.0">
18+
<PrivateAssets>all</PrivateAssets>
19+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
20+
</PackageReference>
21+
<PackageReference Include="coverlet.collector" Version="6.0.2">
22+
<PrivateAssets>all</PrivateAssets>
23+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
24+
</PackageReference>
1925
</ItemGroup>
2026
<ItemGroup>
2127
<ProjectReference Include="..\DocxTemplater.Images\DocxTemplater.Images.csproj" />

DocxTemplater.Test/OpenXmlHelperTest.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public void SplitAfterElementSameRunAtParagraphLevel()
1818
var splitedParts = paragraph.SplitAfterElement(element);
1919

2020
Assert.That(splitedParts.Count, Is.EqualTo(2));
21-
Assert.True(splitedParts.All(x => x is Paragraph));
21+
Assert.That(splitedParts.All(x => x is Paragraph));
2222
Assert.That(splitedParts.ElementAt(0).Descendants<Text>().Count(), Is.EqualTo(2));
2323
Assert.That(splitedParts.ElementAt(1).Descendants<Text>().Count(), Is.EqualTo(3));
2424
Assert.That(body.InnerText, Is.EqualTo(innerTextBefore));
@@ -41,7 +41,7 @@ public void SplitAfterElementDifferentRunAtParagraphLevel()
4141
var splitedParts = paragraph.SplitAfterElement(element);
4242

4343
Assert.That(splitedParts.Count, Is.EqualTo(2));
44-
Assert.True(splitedParts.All(x => x is Paragraph));
44+
Assert.That(splitedParts.All(x => x is Paragraph));
4545
Assert.That(splitedParts.ElementAt(0).Descendants<Text>().Count(), Is.EqualTo(2));
4646
Assert.That(splitedParts.ElementAt(1).Descendants<Text>().Count(), Is.EqualTo(3));
4747
Assert.That(body.InnerText, Is.EqualTo(innerTextBefore));
@@ -62,7 +62,7 @@ public void SplitAfterElemntSameRunAtRunLevel()
6262

6363
var splitedParts = run.SplitAfterElement(element);
6464
Assert.That(splitedParts.Count, Is.EqualTo(2));
65-
Assert.True(splitedParts.All(x => x is Run));
65+
Assert.That(splitedParts.All(x => x is Run));
6666
Assert.That(splitedParts.ElementAt(0).Descendants<Text>().Count(), Is.EqualTo(2));
6767
Assert.That(splitedParts.ElementAt(1).Descendants<Text>().Count(), Is.EqualTo(3));
6868
Assert.That(body.InnerText, Is.EqualTo(innerTextBefore));
@@ -82,7 +82,7 @@ public void SplitBeforeElementSameRunAtParagraphLevel()
8282
var splitedParts = paragraph.SplitBeforeElement(element);
8383

8484
Assert.That(splitedParts.Count, Is.EqualTo(2));
85-
Assert.True(splitedParts.All(x => x is Paragraph));
85+
Assert.That(splitedParts.All(x => x is Paragraph));
8686
Assert.That(splitedParts.ElementAt(0).Descendants<Text>().Count(), Is.EqualTo(1));
8787
Assert.That(splitedParts.ElementAt(1).Descendants<Text>().Count(), Is.EqualTo(4));
8888
Assert.That(body.InnerText, Is.EqualTo(innerTextBefore));
@@ -103,7 +103,7 @@ public void SplitBeforeElementSameRunAtRunLevel()
103103
var splitedParts = run.SplitBeforeElement(element);
104104

105105
Assert.That(splitedParts.Count, Is.EqualTo(2));
106-
Assert.True(splitedParts.All(x => x is Run));
106+
Assert.That(splitedParts.All(x => x is Run));
107107
Assert.That(splitedParts.ElementAt(0).Descendants<Text>().Count(), Is.EqualTo(1));
108108
Assert.That(splitedParts.ElementAt(1).Descendants<Text>().Count(), Is.EqualTo(4));
109109
Assert.That(body.InnerText, Is.EqualTo(innerTextBefore));
@@ -125,7 +125,7 @@ public void SplitAfterElementAtEndOfParent()
125125
var splitedParts = run.SplitAfterElement(element);
126126

127127
Assert.That(splitedParts.Count, Is.EqualTo(1));
128-
Assert.True(splitedParts.All(x => x is Run));
128+
Assert.That(splitedParts.All(x => x is Run));
129129
Assert.That(splitedParts.ElementAt(0).Descendants<Text>().Count(), Is.EqualTo(5));
130130
Assert.That(body.InnerText, Is.EqualTo(innerTextBefore));
131131
}
@@ -146,7 +146,7 @@ public void SplitBeforeElementAtStartOfParent()
146146
var splitedParts = run.SplitBeforeElement(element);
147147

148148
Assert.That(splitedParts.Count, Is.EqualTo(1));
149-
Assert.True(splitedParts.All(x => x is Run));
149+
Assert.That(splitedParts.All(x => x is Run));
150150
Assert.That(splitedParts.ElementAt(0).Descendants<Text>().Count(), Is.EqualTo(5));
151151
Assert.That(body.InnerText, Is.EqualTo(innerTextBefore));
152152
}
@@ -165,7 +165,7 @@ public void SplitRun()
165165
var paragraph = new Paragraph(xml);
166166
var parts = paragraph.ChildElements.First<Run>().SplitAfterElement(paragraph.Descendants<Text>().First());
167167
Assert.That(parts.Count, Is.EqualTo(2));
168-
CollectionAssert.AreEqual(parts.Select(x => x.InnerText), new[] { "Text1", "Text2" });
168+
Assert.That(parts.Select(x => x.InnerText), Is.EqualTo(new[] { "Text1", "Text2" }));
169169

170170
var runs = paragraph.Descendants<Run>().ToList();
171171
Assert.That(runs.Count, Is.EqualTo(2));
@@ -186,7 +186,7 @@ public void SplitRunOnlyOneTextInRun()
186186
var paragraph = new Paragraph(xml);
187187
var parts = paragraph.ChildElements.First<Run>().SplitAfterElement(paragraph.Descendants<Text>().First());
188188
Assert.That(parts.Count, Is.EqualTo(1));
189-
CollectionAssert.AreEqual(parts.Select(x => x.InnerText), new[] { "Text1" });
189+
Assert.That(parts.Select(x => x.InnerText), Is.EqualTo(new[] { "Text1" }));
190190

191191
var runs = paragraph.Descendants<Run>().ToList();
192192
Assert.That(runs.Count, Is.EqualTo(1));
@@ -259,7 +259,7 @@ public void MergeTextMiddle()
259259
var paragraph = new Paragraph(xml);
260260
var firstText = paragraph.Descendants<Text>().Single(x => x.Text == "LeadingMiddleEnd");
261261
firstText.MergeText(7, firstText, 6);
262-
CollectionAssert.AreEqual(new[] { "Leading", "Middle", "End" }, paragraph.Descendants<Text>().Select(x => x.Text));
262+
Assert.That(paragraph.Descendants<Text>().Select(x => x.Text), Is.EqualTo(new[] { "Leading", "Middle", "End" }));
263263
}
264264
}
265265
}

DocxTemplater.Test/PatternMatcherTest.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ static IEnumerable TestPatternMatch_Cases()
4646
yield return new TestCaseData("{{ds.foo.var}:F(d)}").Returns(new[] { PatternType.Variable }).SetName("Variable with dot");
4747
yield return new TestCaseData("{{ds.foo_blubb.var}:F(d)}").Returns(new[] { PatternType.Variable }).SetName("Variable with underscore");
4848
yield return new TestCaseData("{{var}:toupper}").Returns(new[] { PatternType.Variable });
49+
yield return new TestCaseData("{{var}:f(MM/dd/yyy)}").Returns(new[] { PatternType.Variable }).SetName("Slash in pattern");
4950
yield return new TestCaseData("{{else}}").Returns(new[] { PatternType.ConditionElse });
5051
yield return new TestCaseData("{{ else }}").Returns(new[] { PatternType.ConditionElse });
5152
yield return new TestCaseData("{{ : }}").Returns(new[] { PatternType.ConditionElse });
@@ -78,6 +79,8 @@ static IEnumerable PatternMatcherArgumentParsingTest_Cases()
7879
yield return new TestCaseData("{{Foo}}").Returns(Array.Empty<string>());
7980
yield return new TestCaseData("{{Foo}:format}").Returns(Array.Empty<string>());
8081
yield return new TestCaseData("{{Foo}:format()}").Returns(Array.Empty<string>());
82+
yield return new TestCaseData("{{Foo}:format('MM/dd/yyyy')}").Returns(new[] { "MM/dd/yyyy" });
83+
yield return new TestCaseData("{{Foo}:format(MM/dd/yyyy)}").Returns(new[] { "MM/dd/yyyy" });
8184
yield return new TestCaseData("{{Foo}:format('')}").Returns(new[] { string.Empty });
8285
yield return new TestCaseData("{{Foo}:format(a)}").Returns(new[] { "a" });
8386
yield return new TestCaseData("{{Foo}:format(param)}").Returns(new[] { "param" });

DocxTemplater/DocxTemplater.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
66
</PropertyGroup>
77
<ItemGroup>
8-
<PackageReference Include="DocumentFormat.OpenXml" Version="3.0.0" />
8+
<PackageReference Include="DocumentFormat.OpenXml" Version="3.0.2" />
99
<PackageReference Include="DynamicExpresso.Core" Version="2.16.1" />
1010
<PackageReference Include="GitVersion.MsBuild" Version="5.12.0">
1111
<PrivateAssets>all</PrivateAssets>

DocxTemplater/PatterMatcher.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ internal static class PatternMatcher
3838
(?:\(
3939
(?:
4040
(?:
41-
'(?<arg>(?:(?:\\')|[\w\s-\\/:,""])*?)' # quoted string can contain , or whitespace or can be empty
41+
'(?<arg>(?:(?:\\('))|[\w\s-\\/:,""])*?)' # quoted string can contain , or whitespace or can be empty
4242
|
4343
(?<arg>[\w\s-\\/:'""]+) # unquoted string
4444
)(?:\s*,\s*)? # starting and leading whitespaces are ignored

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ The syntax is case insensitive
6868
| {{/Items}}...{{.}:toUpper} ... {{/Items}} | A list of string all upper case - dot notation
6969
| {{/Items}}{{.}}{{:s:}},{{/Items}} | A list of strings comma separated - dot notation
7070
| {{SomeString}:ToUpper()} | Variable with formatter to upper
71-
| {{SomeDate}:Format("MM/dd/yyyy")} | Date variable with formatting
72-
| {{SomeDate}:F("MM/dd/yyyy")} | Date variable with formatting - short syntax
71+
| {{SomeDate}:Format('MM/dd/yyyy')} | Date variable with formatting
72+
| {{SomeDate}:F('MM/dd/yyyy')} | Date variable with formatting - short syntax
7373
| {{SomeBytes}:img()} | Image Formatter for image data
7474
| {{SomeHtmlString}:html()} | Inserts html string into word document
7575
### Collections

0 commit comments

Comments
 (0)