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();
}