From 53e2d9e9cd69e9f9ebf9152002b4f14020d8f41e Mon Sep 17 00:00:00 2001 From: kaso17 Date: Sun, 18 Dec 2016 12:20:33 +0100 Subject: [PATCH] Cardigann: Add support for re_replace template function Example: {{ re_replace .Query.Keywords "[^a-zA-Z0-9]+" "%" }} --- src/Jackett/Indexers/CardigannIndexer.cs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/Jackett/Indexers/CardigannIndexer.cs b/src/Jackett/Indexers/CardigannIndexer.cs index 3349997ab..b3cfed5e8 100644 --- a/src/Jackett/Indexers/CardigannIndexer.cs +++ b/src/Jackett/Indexers/CardigannIndexer.cs @@ -224,6 +224,26 @@ namespace Jackett.Indexers variables = getTemplateVariablesFromConfigData(); } + // handle re_replace expression + // Example: {{ re_replace .Query.Keywords "[^a-zA-Z0-9]+" "%" }} + Regex ReReplaceRegex = new Regex(@"{{\s*re_replace\s+(\..+?)\s+""(.+)""\s+""(.+?)""\s*}}"); + var ReReplaceRegexMatches = ReReplaceRegex.Match(template); + + while (ReReplaceRegexMatches.Success) + { + string all = ReReplaceRegexMatches.Groups[0].Value; + string variable = ReReplaceRegexMatches.Groups[1].Value; + string regexp = ReReplaceRegexMatches.Groups[2].Value; + string newvalue = ReReplaceRegexMatches.Groups[3].Value; + + Regex ReplaceRegex = new Regex(regexp); + var input = (string)variables[variable]; + var expanded = ReplaceRegex.Replace(input, newvalue); + + template = template.Replace(all, expanded); + ReReplaceRegexMatches = ReReplaceRegexMatches.NextMatch(); + } + // handle if ... else ... expression Regex IfElseRegex = new Regex(@"{{if\s*(.+?)\s*}}(.*?){{\s*else\s*}}(.*?){{\s*end\s*}}"); var IfElseRegexMatches = IfElseRegex.Match(template);