From 11ae3fa441624b3e207a0f18e3cbe481a2ec280d Mon Sep 17 00:00:00 2001 From: reven Date: Wed, 15 Mar 2023 11:17:18 +1300 Subject: [PATCH 1/3] added "EMPTY" to pattern replacer --- BasicNodes/File/PatternReplacer.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/BasicNodes/File/PatternReplacer.cs b/BasicNodes/File/PatternReplacer.cs index 141a3cf3..c971705e 100644 --- a/BasicNodes/File/PatternReplacer.cs +++ b/BasicNodes/File/PatternReplacer.cs @@ -36,14 +36,17 @@ public class PatternReplacer : Node { foreach(var replacement in Replacements) { + var value = replacement.Value ?? string.Empty; + if (value == "EMPTY") + value = string.Empty; try { // this might not be a regex, but try it first - updated = Regex.Replace(updated, replacement.Key, replacement.Value, RegexOptions.IgnoreCase); + updated = Regex.Replace(updated, replacement.Key, value, RegexOptions.IgnoreCase); } catch (Exception ex) { } - updated = updated.Replace(replacement.Key, replacement.Value); + updated = updated.Replace(replacement.Key, value); } if (updated == filename) From 1fa734c35c8d53bae56be7c82763fdaedb04b532 Mon Sep 17 00:00:00 2001 From: reven Date: Wed, 15 Mar 2023 12:24:19 +1300 Subject: [PATCH 2/3] added unit test to pattern replacer --- BasicNodes/File/PatternReplacer.cs | 46 +++++++++++++++--------- BasicNodes/Tests/PatternReplacerTests.cs | 14 ++++++++ 2 files changed, 43 insertions(+), 17 deletions(-) diff --git a/BasicNodes/File/PatternReplacer.cs b/BasicNodes/File/PatternReplacer.cs index c971705e..57868d32 100644 --- a/BasicNodes/File/PatternReplacer.cs +++ b/BasicNodes/File/PatternReplacer.cs @@ -30,25 +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) - { - var value = replacement.Value ?? string.Empty; - if (value == "EMPTY") - value = string.Empty; - 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); - } - + string filename = new FileInfo(UseWorkingFileName ? args.WorkingFile : args.FileName).Name; + string updated = RunReplacements(filename); + if (updated == filename) { args.Logger?.ILog("No replacements found in file: " + filename); @@ -79,4 +65,30 @@ public class PatternReplacer : Node return -1; } } + + /// + /// Run replacements on a filename + /// + /// the filename to replacement + /// the replaced files + internal string RunReplacements(string filename) + { + string updated = filename; + foreach(var replacement in Replacements) + { + var value = replacement.Value ?? string.Empty; + if (value == "EMPTY") + value = string.Empty; + 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..ddc19347 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.WorkingFile); + Assert.AreEqual(@"c:\test\Seinfeld.mkv", result); + } } } From d5872392ee4bf507a49b365949f09cf6e20dc8fd Mon Sep 17 00:00:00 2001 From: reven Date: Wed, 15 Mar 2023 12:27:27 +1300 Subject: [PATCH 3/3] added logging to pattern replacer --- BasicNodes/File/PatternReplacer.cs | 13 +++++++++++-- BasicNodes/Tests/PatternReplacerTests.cs | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/BasicNodes/File/PatternReplacer.cs b/BasicNodes/File/PatternReplacer.cs index 57868d32..64a13870 100644 --- a/BasicNodes/File/PatternReplacer.cs +++ b/BasicNodes/File/PatternReplacer.cs @@ -33,7 +33,7 @@ public class PatternReplacer : Node try { string filename = new FileInfo(UseWorkingFileName ? args.WorkingFile : args.FileName).Name; - string updated = RunReplacements(filename); + string updated = RunReplacements(args, filename); if (updated == filename) { @@ -69,16 +69,25 @@ public class PatternReplacer : Node /// /// Run replacements on a filename /// + /// The node parameters /// the filename to replacement /// the replaced files - internal string RunReplacements(string filename) + 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 diff --git a/BasicNodes/Tests/PatternReplacerTests.cs b/BasicNodes/Tests/PatternReplacerTests.cs index ddc19347..86218d80 100644 --- a/BasicNodes/Tests/PatternReplacerTests.cs +++ b/BasicNodes/Tests/PatternReplacerTests.cs @@ -51,7 +51,7 @@ namespace BasicNodes.Tests node.UnitTest = true; var args = new FileFlows.Plugin.NodeParameters(@"c:\test\Seinfeld.h265.mkv", new TestLogger(), false, string.Empty); - var result = node.RunReplacements(args.WorkingFile); + var result = node.RunReplacements(args, args.WorkingFile); Assert.AreEqual(@"c:\test\Seinfeld.mkv", result); } }