From 6f33f34f4628b8d8ed31b11e416e817272189ea5 Mon Sep 17 00:00:00 2001 From: Garfield69 Date: Mon, 27 Jun 2022 19:54:35 +1200 Subject: [PATCH] cardigann: Convert to the GoTemplate standard the Range with Index statement. --- .../Indexers/CardigannIndexer.cs | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/Jackett.Common/Indexers/CardigannIndexer.cs b/src/Jackett.Common/Indexers/CardigannIndexer.cs index 4857b8b65..624f2ce5e 100644 --- a/src/Jackett.Common/Indexers/CardigannIndexer.cs +++ b/src/Jackett.Common/Indexers/CardigannIndexer.cs @@ -457,7 +457,7 @@ namespace Jackett.Common.Indexers } // handle range expression - var RangeRegex = new Regex(@"{{\s*range\s*(.+?)\s*}}(.*?){{\.}}(.*?){{end}}"); + var RangeRegex = new Regex(@"{{\s*range\s*(((?\$.+?),)((\s*(?.+?)\s*(:=)\s*)))?(?.+?)\s*}}(?.*?){{\.}}(?.*?){{end}}"); var RangeRegexMatches = RangeRegex.Match(template); while (RangeRegexMatches.Success) @@ -465,25 +465,29 @@ namespace Jackett.Common.Indexers var expanded = string.Empty; var all = RangeRegexMatches.Groups[0].Value; - var variable = RangeRegexMatches.Groups[1].Value; - var prefix = RangeRegexMatches.Groups[2].Value; - var postfix = RangeRegexMatches.Groups[3].Value; - var hasArrayIndex = prefix.Contains("[*]"); - var arrayIndex = -1; - if (hasArrayIndex) - prefix = prefix.Replace("[*]", "[-1]"); + var index = RangeRegexMatches.Groups["index"].Value; + var variable = RangeRegexMatches.Groups["variable"].Value; + var prefix = RangeRegexMatches.Groups["prefix"].Value; + var postfix = RangeRegexMatches.Groups["postfix"].Value; + + var arrayIndex = 0; + var indexReplace = "{{" + index + "}}"; foreach (var value in (ICollection)variables[variable]) { var newvalue = value; if (modifier != null) newvalue = modifier(newvalue); - if (hasArrayIndex) + var indexValue = arrayIndex++; + + if (index != null) { - prefix = prefix.Replace("[" + arrayIndex.ToString() + "]", "[" + (arrayIndex + 1).ToString() + "]"); - arrayIndex++; + expanded += prefix.Replace(indexReplace, indexValue.ToString()) + newvalue + postfix.Replace(indexReplace, indexValue.ToString()); + } + else + { + expanded += prefix + newvalue + postfix; } - expanded += prefix + newvalue + postfix; } template = template.Replace(all, expanded); RangeRegexMatches = RangeRegexMatches.NextMatch();