Skip to content

Commit bb2a720

Browse files
committed
refactor(XMLPatch): streamline element addition logic for improved clarity and maintainability
1 parent 9b683de commit bb2a720

File tree

1 file changed

+18
-38
lines changed

1 file changed

+18
-38
lines changed

XMLPatch/Program.cs

Lines changed: 18 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,7 @@ private void ApplyAdd(XElement addElement, XElement originalRoot)
441441
switch (pos)
442442
{
443443
case "before":
444+
case "after":
444445
if (
445446
(ParsedOptions == null || !ParsedOptions.AllowDoubles)
446447
&& targetElement
@@ -455,48 +456,19 @@ private void ApplyAdd(XElement addElement, XElement originalRoot)
455456
Logger.Warn($"Element '{clonedInfo}' already exists in '{parentInfo}'. Skipping.");
456457
continue;
457458
}
458-
targetElement.AddBeforeSelf(cloned);
459-
Logger.Info($"Added new element '{clonedInfo}' before '{targetInfo}' in '{parentInfo}'.");
460-
latestAdded = cloned;
461-
break;
462-
case "after":
463-
if (
464-
(ParsedOptions == null || !ParsedOptions.AllowDoubles)
465-
&& targetElement
466-
.Parent!.Elements()
467-
.Any(e =>
468-
e.Name == cloned.Name
469-
&& e.Attributes().All(a => cloned.Attribute(a.Name)?.Value == a.Value)
470-
&& cloned.Attributes().All(a => e.Attribute(a.Name)?.Value == a.Value)
471-
)
472-
)
459+
if (pos == "before")
473460
{
474-
Logger.Warn($"Element '{clonedInfo}' already exists in '{parentInfo}'. Skipping.");
475-
continue;
461+
targetElement.AddBeforeSelf(cloned);
462+
Logger.Info($"Added new element '{clonedInfo}' before '{targetInfo}' in '{parentInfo}'.");
476463
}
477-
targetElement.AddAfterSelf(cloned);
478-
Logger.Info($"Added new element '{clonedInfo}' after '{targetInfo}' in '{parentInfo}'.");
479-
latestAdded = cloned;
480-
break;
481-
case "prepend":
482-
if (
483-
(ParsedOptions == null || !ParsedOptions.AllowDoubles)
484-
&& targetElement
485-
.Elements()
486-
.Any(e =>
487-
e.Name == cloned.Name
488-
&& e.Attributes().All(a => cloned.Attribute(a.Name)?.Value == a.Value)
489-
&& cloned.Attributes().All(a => e.Attribute(a.Name)?.Value == a.Value)
490-
)
491-
)
464+
else
492465
{
493-
Logger.Warn($"Element '{clonedInfo}' already exists in '{targetInfo}'. Skipping.");
494-
continue;
466+
targetElement.AddAfterSelf(cloned);
467+
Logger.Info($"Added new element '{clonedInfo}' after '{targetInfo}' in '{parentInfo}'.");
495468
}
496-
targetElement.AddFirst(cloned);
497-
Logger.Info($"Prepended new element '{clonedInfo}' to '{targetInfo}'.");
498469
latestAdded = cloned;
499470
break;
471+
case "prepend":
500472
case "append":
501473
if (
502474
(ParsedOptions == null || !ParsedOptions.AllowDoubles)
@@ -512,8 +484,16 @@ private void ApplyAdd(XElement addElement, XElement originalRoot)
512484
Logger.Warn($"Element '{clonedInfo}' already exists in '{targetInfo}'. Skipping.");
513485
continue;
514486
}
515-
targetElement.Add(cloned);
516-
Logger.Info($"Appended new element '{clonedInfo}' to '{targetInfo}'.");
487+
if (pos == "prepend")
488+
{
489+
targetElement.AddFirst(cloned);
490+
Logger.Info($"Prepended new element '{clonedInfo}' to '{targetInfo}'.");
491+
}
492+
else
493+
{
494+
targetElement.Add(cloned);
495+
Logger.Info($"Appended new element '{clonedInfo}' to '{targetInfo}'.");
496+
}
517497
latestAdded = cloned;
518498
break;
519499
default:

0 commit comments

Comments
 (0)