diff --git a/BasicNodes/File/PatternReplacer.cs b/BasicNodes/File/PatternReplacer.cs
index 141a3cf3..64a13870 100644
--- a/BasicNodes/File/PatternReplacer.cs
+++ b/BasicNodes/File/PatternReplacer.cs
@@ -30,22 +30,11 @@ public class PatternReplacer : Node
if (Replacements?.Any() != true)
return 2; // no replacements
- string filename = new FileInfo(UseWorkingFileName ? args.WorkingFile : args.FileName).Name;
- string updated = filename;
try
{
- foreach(var replacement in Replacements)
- {
- try
- {
- // this might not be a regex, but try it first
- updated = Regex.Replace(updated, replacement.Key, replacement.Value, RegexOptions.IgnoreCase);
- }
- catch (Exception ex) { }
-
- updated = updated.Replace(replacement.Key, replacement.Value);
- }
-
+ string filename = new FileInfo(UseWorkingFileName ? args.WorkingFile : args.FileName).Name;
+ string updated = RunReplacements(args, filename);
+
if (updated == filename)
{
args.Logger?.ILog("No replacements found in file: " + filename);
@@ -76,4 +65,39 @@ public class PatternReplacer : Node
return -1;
}
}
+
+ ///
+ /// Run replacements on a filename
+ ///
+ /// The node parameters
+ /// the filename to replacement
+ /// the replaced files
+ internal string RunReplacements(NodeParameters args, string filename)
+ {
+ string updated = filename;
+ foreach(var replacement in Replacements)
+ {
+ var value = replacement.Value ?? string.Empty;
+ if (value == "EMPTY")
+ {
+ args?.Logger?.ILog("Using an EMPTY replacement");
+ value = string.Empty;
+ }
+ else
+ {
+
+ args?.Logger?.ILog("Using replacement value: \"" + value + "\"");
+ }
+ try
+ {
+ // this might not be a regex, but try it first
+ updated = Regex.Replace(updated, replacement.Key, value, RegexOptions.IgnoreCase);
+ }
+ catch (Exception ex) { }
+
+ updated = updated.Replace(replacement.Key, value);
+ }
+
+ return updated;
+ }
}
diff --git a/BasicNodes/Tests/PatternReplacerTests.cs b/BasicNodes/Tests/PatternReplacerTests.cs
index ec6741b8..86218d80 100644
--- a/BasicNodes/Tests/PatternReplacerTests.cs
+++ b/BasicNodes/Tests/PatternReplacerTests.cs
@@ -40,6 +40,20 @@ namespace BasicNodes.Tests
Assert.AreEqual(1, result);
Assert.AreEqual(@"c:\test\Seinfeld 3x06.mkv", args.WorkingFile);
}
+ [TestMethod]
+ public void PatternReplacer_Empty()
+ {
+ PatternReplacer node = new PatternReplacer();
+ node.Replacements = new List>
+ {
+ new KeyValuePair(@"\.h265", "EMPTY")
+ };
+ node.UnitTest = true;
+ var args = new FileFlows.Plugin.NodeParameters(@"c:\test\Seinfeld.h265.mkv", new TestLogger(), false, string.Empty);
+
+ var result = node.RunReplacements(args, args.WorkingFile);
+ Assert.AreEqual(@"c:\test\Seinfeld.mkv", result);
+ }
}
}