Skip to content

Commit 2c0d52f

Browse files
authored
Merge pull request #59 from tukhfatov/bugfix/fix-if-statements-in-loops
Fix if statements inside of loop
2 parents b3cac69 + 7de1e9f commit 2c0d52f

1 file changed

Lines changed: 108 additions & 108 deletions

File tree

src/MiniWord/MiniWord.Implment.cs

Lines changed: 108 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,9 @@ private static void Generate(this OpenXmlElement xmlElement, WordprocessingDocum
8383
var dicKey = $"{listKey}.{e.Key}";
8484
dic.Add(dicKey, e.Value);
8585
}
86-
87-
ReplaceStatements(xmlElement, tags);
88-
86+
87+
ReplaceStatements(newTr, tags: dic);
88+
8989
ReplaceText(newTr, docx, tags: dic);
9090
table.Append(newTr);
9191
}
@@ -95,7 +95,7 @@ private static void Generate(this OpenXmlElement xmlElement, WordprocessingDocum
9595
}
9696
}
9797
}
98-
98+
9999
ReplaceStatements(xmlElement, tags);
100100

101101
ReplaceText(xmlElement, docx, tags);
@@ -124,10 +124,10 @@ private static void AvoidSplitTagText(OpenXmlElement xmlElement)
124124
// TODO: check tag exist
125125
// TODO: record tag text if without tag then system need to clear them
126126
// TODO: every {{tag}} one <t>for them</t> and add text before first text and copy first one and remove {{, tagname, }}
127-
128-
if(s.StartsWith("{{foreach"))
127+
128+
if (s.StartsWith("{{foreach"))
129129
foreachIncluded = true;
130-
130+
131131
if (!s.StartsWith("{{"))
132132
clear = true;
133133
else if (s.Contains("{{") && s.Contains("}}") && !foreachIncluded)
@@ -161,7 +161,7 @@ private static void AvoidSplitTagText(OpenXmlElement xmlElement)
161161
clear = true;
162162
foreachIncluded = false;
163163
}
164-
164+
165165
}
166166

167167
if (clear)
@@ -218,24 +218,24 @@ private static void ReplaceStatements(OpenXmlElement xmlElement, Dictionary<stri
218218
{
219219
var paragraphs = xmlElement.Descendants<Paragraph>().ToList();
220220

221-
while (paragraphs.Any(s => s.InnerText.Contains("@if")))
221+
while (paragraphs.Any(s => s.InnerText.Contains("@if")))
222222
{
223223
var ifIndex = paragraphs.FindIndex(0, s => s.InnerText.Contains("@if"));
224224
var endIfFinalIndex = paragraphs.FindIndex(ifIndex, s => s.InnerText.Contains("@endif"));
225-
225+
226226
var statement = paragraphs[ifIndex].InnerText.Split(' ');
227227

228228
var tagValue = tags[statement[1]];
229229
var checkStatement = statement.Length == 4 ? EvaluateStatement(tagValue, statement[2], statement[3]) : !bool.Parse(tagValue.ToString());
230230

231231
if (checkStatement)
232232
{
233-
for (int i = ifIndex+1; i <= endIfFinalIndex-1; i++)
233+
for (int i = ifIndex + 1; i <= endIfFinalIndex - 1; i++)
234234
{
235235
paragraphs[i].Remove();
236236
}
237237
}
238-
238+
239239
paragraphs[ifIndex].Remove();
240240
paragraphs[endIfFinalIndex].Remove();
241241

@@ -246,105 +246,105 @@ private static void ReplaceStatements(OpenXmlElement xmlElement, Dictionary<stri
246246
private static bool EvaluateStatement(object tagValue, string comparisonOperator, string value)
247247
{
248248
var checkStatement = false;
249-
249+
250250
switch (tagValue)
251-
{
252-
case double dtg when double.TryParse(value, out var doubleNumber):
253-
switch (comparisonOperator)
254-
{
255-
case "==":
256-
checkStatement = !dtg.Equals(doubleNumber);
257-
break;
258-
case "!=":
259-
checkStatement = dtg.Equals(doubleNumber);
260-
break;
261-
case ">":
262-
checkStatement = dtg <= doubleNumber;
263-
break;
264-
case "<":
265-
checkStatement = dtg >= doubleNumber;
266-
break;
267-
case ">=":
268-
checkStatement = dtg < doubleNumber;
269-
break;
270-
case "<=":
271-
checkStatement = dtg > doubleNumber;
272-
break;
273-
}
251+
{
252+
case double dtg when double.TryParse(value, out var doubleNumber):
253+
switch (comparisonOperator)
254+
{
255+
case "==":
256+
checkStatement = !dtg.Equals(doubleNumber);
257+
break;
258+
case "!=":
259+
checkStatement = dtg.Equals(doubleNumber);
260+
break;
261+
case ">":
262+
checkStatement = dtg <= doubleNumber;
263+
break;
264+
case "<":
265+
checkStatement = dtg >= doubleNumber;
266+
break;
267+
case ">=":
268+
checkStatement = dtg < doubleNumber;
269+
break;
270+
case "<=":
271+
checkStatement = dtg > doubleNumber;
272+
break;
273+
}
274274

275-
break;
276-
case int itg when int.TryParse(value, out var intNumber):
277-
switch (comparisonOperator)
278-
{
279-
case "==":
280-
checkStatement = !itg.Equals(intNumber);
281-
break;
282-
case "!=":
283-
checkStatement = itg.Equals(intNumber);
284-
break;
285-
case ">":
286-
checkStatement = itg <= intNumber;
287-
break;
288-
case "<":
289-
checkStatement = itg >= intNumber;
290-
break;
291-
case ">=":
292-
checkStatement = itg < intNumber;
293-
break;
294-
case "<=":
295-
checkStatement = itg > intNumber;
296-
break;
297-
}
275+
break;
276+
case int itg when int.TryParse(value, out var intNumber):
277+
switch (comparisonOperator)
278+
{
279+
case "==":
280+
checkStatement = !itg.Equals(intNumber);
281+
break;
282+
case "!=":
283+
checkStatement = itg.Equals(intNumber);
284+
break;
285+
case ">":
286+
checkStatement = itg <= intNumber;
287+
break;
288+
case "<":
289+
checkStatement = itg >= intNumber;
290+
break;
291+
case ">=":
292+
checkStatement = itg < intNumber;
293+
break;
294+
case "<=":
295+
checkStatement = itg > intNumber;
296+
break;
297+
}
298298

299-
break;
300-
case DateTime dttg when DateTime.TryParse(value, out var date):
301-
switch (comparisonOperator)
302-
{
303-
case "==":
304-
checkStatement = !dttg.Equals(date);
305-
break;
306-
case "!=":
307-
checkStatement = dttg.Equals(date);
308-
break;
309-
case ">":
310-
checkStatement = dttg <= date;
311-
break;
312-
case "<":
313-
checkStatement = dttg >= date;
314-
break;
315-
case ">=":
316-
checkStatement = dttg < date;
317-
break;
318-
case "<=":
319-
checkStatement = dttg > date;
320-
break;
321-
}
299+
break;
300+
case DateTime dttg when DateTime.TryParse(value, out var date):
301+
switch (comparisonOperator)
302+
{
303+
case "==":
304+
checkStatement = !dttg.Equals(date);
305+
break;
306+
case "!=":
307+
checkStatement = dttg.Equals(date);
308+
break;
309+
case ">":
310+
checkStatement = dttg <= date;
311+
break;
312+
case "<":
313+
checkStatement = dttg >= date;
314+
break;
315+
case ">=":
316+
checkStatement = dttg < date;
317+
break;
318+
case "<=":
319+
checkStatement = dttg > date;
320+
break;
321+
}
322322

323-
break;
324-
case bool btg when bool.TryParse(value, out var boolean):
325-
switch (comparisonOperator)
326-
{
327-
case "==":
328-
checkStatement = btg != boolean;
329-
break;
330-
case "!=":
331-
checkStatement = btg == boolean;
332-
break;
333-
}
334-
break;
335-
case string stg:
336-
switch (comparisonOperator)
337-
{
338-
case "==":
339-
checkStatement = stg != value;
340-
break;
341-
case "!=":
342-
checkStatement = stg == value;
343-
break;
344-
}
323+
break;
324+
case bool btg when bool.TryParse(value, out var boolean):
325+
switch (comparisonOperator)
326+
{
327+
case "==":
328+
checkStatement = btg != boolean;
329+
break;
330+
case "!=":
331+
checkStatement = btg == boolean;
332+
break;
333+
}
334+
break;
335+
case string stg:
336+
switch (comparisonOperator)
337+
{
338+
case "==":
339+
checkStatement = stg != value;
340+
break;
341+
case "!=":
342+
checkStatement = stg == value;
343+
break;
344+
}
345345

346-
break;
347-
}
346+
break;
347+
}
348348

349349
return checkStatement;
350350
}
@@ -378,7 +378,7 @@ private static void ReplaceText(OpenXmlElement xmlElement, WordprocessingDocumen
378378
isMatch = true;
379379
}
380380
}
381-
381+
382382
if (isMatch)
383383
{
384384
if (tag.Value is string[] || tag.Value is IList<string> || tag.Value is List<string>)
@@ -618,7 +618,7 @@ private static void AddPicture(OpenXmlElement appendElement, string relationship
618618
new A.BlipExtension()
619619
{
620620
Uri =
621-
$"{{{ Guid.NewGuid().ToString("n")}}}"
621+
$"{{{Guid.NewGuid().ToString("n")}}}"
622622
})
623623
)
624624
{

0 commit comments

Comments
 (0)