public static string GenerateChangeLogToc()

in src/TemplateRefGenerator/Generators/TocGenerator.cs [83:113]


    public static string GenerateChangeLogToc(MarkdownGenerator.GroupedTypes groupedTypes)
    {
        TocItem latestVersionToc = new("<placeholder>", new());
        foreach (var (resourceType, _) in groupedTypes.GetApiVersionsByType().OrderBy(x => x.Key, StringComparer.OrdinalIgnoreCase))
        {
            var parentToc = latestVersionToc;
            var segments = resourceType.Split('/').Skip(1).ToArray();
            foreach (var parentSegment in segments[0..^1])
            {
                var folderName = $"{parentSegment}/";
                if (parentToc.Items.FirstOrDefault(x => StringComparer.OrdinalIgnoreCase.Equals(x.Name, folderName)) is not {} nextParentToc)
                {
                    nextParentToc = new(folderName, new());
                    parentToc.Items.Add(nextParentToc);
                }

                parentToc = nextParentToc;
            }

            var mdPath = $"./{string.Join('/', segments)}.md".ToLowerInvariant();
            TocItem childToc = new(segments.Last(), new(), mdPath);
            parentToc.Items.Add(childToc);
        }

        var sb = new StringBuilder();
        foreach (var toc in latestVersionToc.Items)
        {
            Print(toc, sb, 0);
        }
        return sb.ToString();
    }