Browse Source

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

Cli: Support for nested <Template-Remove> conditions
pull/12683/head
Galip Tolga Erdem 4 years ago
committed by GitHub
parent
commit
e1aaa1d84a
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 30
      framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Files/FileEntryExtensions.cs

30
framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Files/FileEntryExtensions.cs

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

Loading…
Cancel
Save