Skip to content

Commit aeb12c1

Browse files
author
Brett Prucha
committed
Add support to conditional check for undefined tags
1 parent e6e2248 commit aeb12c1

File tree

3 files changed

+6
-1
lines changed

3 files changed

+6
-1
lines changed

samples/docx/TestIfStatement.docx

466 Bytes
Binary file not shown.

src/MiniWord/MiniWord.Implment.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,7 @@ private static void ReplaceStatements(OpenXmlElement xmlElement, Dictionary<stri
526526

527527
var statement = paragraphs[ifIndex].InnerText.Split(' ');
528528

529-
var tagValue = tags[statement[1]] ?? "NULL";
529+
var tagValue = tags.ContainsKey(statement[1]) ? tags[statement[1]] ?? "NULL" : "{UNDEFINED}";
530530

531531
var checkStatement = statement.Length == 4 ? EvaluateStatement(tagValue.ToString(), statement[2], statement[3]) : !bool.Parse(tagValue.ToString());
532532

@@ -557,6 +557,9 @@ private static string EvaluateIfStatement(string text)
557557
var ifEndIndex = text.IndexOf(")if", ifIndex, StringComparison.Ordinal);
558558

559559
var statement = text.Substring(ifIndex + ifStartTag.Length, ifEndIndex - (ifIndex + ifStartTag.Length)).Split(',');
560+
561+
if(Regex.IsMatch(statement[0], "^{{.*}}$"))
562+
statement[0] = "{UNDEFINED}";
560563

561564
var checkStatement = EvaluateStatement(statement[0], statement[1], statement[2]);
562565

tests/MiniWordTests/MiniWordTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,8 @@ public void MiniWordIfStatement_FirstIf()
153153
Assert.Contains("Points are greater than 100", docXml);
154154
Assert.Contains("CreateDate is not less than 2021", docXml);
155155
Assert.DoesNotContain("CreateDate is not greater than 2021", docXml);
156+
Assert.Contains("Foo is undefined", docXml);
157+
Assert.Contains("Bar is undefined", docXml);
156158
}
157159

158160
[Fact]

0 commit comments

Comments
 (0)