From 55577729578ace7ef6070ddb58b46c701f431d9c Mon Sep 17 00:00:00 2001 From: Mbucari Date: Fri, 3 Feb 2023 11:47:55 -0700 Subject: [PATCH] Add conditional negation --- .../FileManager/NamingTemplate/ConditionalTagClass[TClass].cs | 4 ++-- Source/_Tests/FileManager.Tests/FileNamingTemplateTests.cs | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Source/FileManager/NamingTemplate/ConditionalTagClass[TClass].cs b/Source/FileManager/NamingTemplate/ConditionalTagClass[TClass].cs index 531e58b7..69d3fdc9 100644 --- a/Source/FileManager/NamingTemplate/ConditionalTagClass[TClass].cs +++ b/Source/FileManager/NamingTemplate/ConditionalTagClass[TClass].cs @@ -38,7 +38,7 @@ public class ConditionalTagClass : TagClass public ConditionalTag(ITemplateTag templateTag, RegexOptions options, Expression conditionExpression) : base(templateTag, conditionExpression) { - NameMatcher = new Regex($"^<{templateTag.TagName}->", options); + NameMatcher = new Regex($"^<(!)?{templateTag.TagName}->", options); NameCloseMatcher = new Regex($"^<-{templateTag.TagName}>", options); } @@ -59,6 +59,6 @@ public class ConditionalTagClass : TagClass } } - protected override Expression GetTagExpression(string exactName, string formatter) => ExpressionValue; + protected override Expression GetTagExpression(string exactName, string formatter) => formatter == "!" ? Expression.Not(ExpressionValue) : ExpressionValue; } } diff --git a/Source/_Tests/FileManager.Tests/FileNamingTemplateTests.cs b/Source/_Tests/FileManager.Tests/FileNamingTemplateTests.cs index 4eed5156..0b7e60e4 100644 --- a/Source/_Tests/FileManager.Tests/FileNamingTemplateTests.cs +++ b/Source/_Tests/FileManager.Tests/FileNamingTemplateTests.cs @@ -106,7 +106,7 @@ namespace NamingTemplateTests [DataRow(" ", "prop3_item1 prop3_item2 prop1_item3 prop2_item4", 4)] [DataRow("<-ifc1><-ifc2><-ifc3>", "prop1_item1prop3_item2", 3)] [DataRow("<-ifc2><-ifc3><-ifc1>", "prop1_item1prop3_item2", 3)] - [DataRow("<-ifc3><-ifc1><-ifc2>", "", 3)] + [DataRow("<-ifc3><-ifc1><-ifc2>", "prop1_item1prop2_item4prop3_item2", 3)] public void test(string inStr, string outStr, int numTags) { var template = NamingTemplate.Parse(inStr, new TagClass[] { props1, props2, props3, conditional1, conditional2, conditional3 });