Merge pull request #12682 from abpframework/cli-inner-condition

Cli: Support for nested <Template-Remove> conditions
pull/12683/head
Galip Tolga Erdem 3 years ago committed by GitHub
commit e1aaa1d84a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -6,6 +6,8 @@ namespace Volo.Abp.Cli.ProjectBuilding.Files;
public static class FileEntryExtensions
{
private static int _maximumRecursionCount = 20;
public static FileEntry ReplaceText(this FileEntry file, string oldText, string newText)
{
file.NormalizeLineEndings();
@ -20,7 +22,7 @@ public static class FileEntryExtensions
public static void RemoveTemplateCodeMarkers(this FileEntry file)
{
if (!file.Content.Contains("</TEMPLATE-REMOVE>"))
if (!file.Content.Contains("<TEMPLATE-REMOVE") && !file.Content.Contains("</TEMPLATE-REMOVE>") )
{
return;
}
@ -49,9 +51,9 @@ public static class FileEntryExtensions
file.SetLines(newLines);
}
private static void RemoveMarkedTemplateCode(this FileEntry file, List<string> symbols)
private static void RemoveMarkedTemplateCode(this FileEntry file, List<string> symbols, int recursionCount = 0)
{
if (!file.Content.Contains("</TEMPLATE-REMOVE>"))
if (!file.Content.Contains("<TEMPLATE-REMOVE") || recursionCount > _maximumRecursionCount)
{
return;
}
@ -97,9 +99,25 @@ public static class FileEntryExtensions
continue;
}
while (i < lines.Length && !lines[i].Contains("</TEMPLATE-REMOVE>"))
var innerConditionCount = 0;
while (i < lines.Length)
{
++i;
i++;
if (lines[i].Contains("<TEMPLATE-REMOVE"))
{
innerConditionCount++;
}
else if (lines[i].Contains("</TEMPLATE-REMOVE>"))
{
if (innerConditionCount < 1)
{
break;
}
innerConditionCount--;
}
}
if (lines[i+1].Contains("<TEMPLATE-REMOVE"))
@ -117,6 +135,8 @@ public static class FileEntryExtensions
}
file.SetLines(newLines);
RemoveMarkedTemplateCode(file, symbols, recursionCount + 1);
}
private static TemplateRemoveMarkerParseResult ParseTemplateRemoveMarker(string marker)

Loading…
Cancel
Save