diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Files/FileEntryExtensions.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Files/FileEntryExtensions.cs index 8543ffb1ac..a5085f83a9 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectBuilding/Files/FileEntryExtensions.cs +++ b/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 { + 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("")) + if (!file.Content.Contains("") ) { return; } @@ -37,9 +39,9 @@ public static class FileEntryExtensions { //TODO: What if we use inline like: some-code //TODO: This logic skips the code in that case. Should handle it - ++i; + continue; } - + if (i < lines.Length) { newLines.Add(lines[i]); @@ -49,9 +51,9 @@ public static class FileEntryExtensions file.SetLines(newLines); } - private static void RemoveMarkedTemplateCode(this FileEntry file, List symbols) + private static void RemoveMarkedTemplateCode(this FileEntry file, List symbols, int recursionCount = 0) { - if (!file.Content.Contains("")) + if (!file.Content.Contains(" _maximumRecursionCount) { return; } @@ -97,9 +99,25 @@ public static class FileEntryExtensions continue; } - while (i < lines.Length && !lines[i].Contains("")) + var innerConditionCount = 0; + + while (i < lines.Length) { - ++i; + i++; + + if (lines[i].Contains("")) + { + if (innerConditionCount < 1) + { + break; + } + + innerConditionCount--; + } } if (lines[i+1].Contains("