Merge remote-tracking branch 'origin/develop' into develop

This commit is contained in:
reven
2023-03-25 15:12:30 +13:00
2 changed files with 52 additions and 14 deletions

View File

@@ -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;
}
}
/// <summary>
/// Run replacements on a filename
/// </summary>
/// <param name="args">The node parameters</param>
/// <param name="filename">the filename to replacement</param>
/// <returns>the replaced files</returns>
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;
}
}

View File

@@ -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<KeyValuePair<string, string>>
{
new KeyValuePair<string, string>(@"\.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);
}
}
}