mirror of
https://github.com/revenz/FileFlowsPlugins.git
synced 2026-01-07 03:29:29 -06:00
Merge remote-tracking branch 'origin/develop' into develop
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user