in src/TemplateRefGenerator/Generators/TocGenerator.cs [115:174]
private record RootTocEntry(
string Name,
string DisplayName,
string MainHref,
string ChangeLogHref);
public static string GenerateRootToc(ConfigLoader configLoader, IReadOnlyList<string> providerNamespaces)
{
var sb = new StringBuilder();
var config = configLoader.GetConfiguration();
var titleMapping = config.TocTitleMapping.ToDictionary(x => x.Key, x => x.Value, StringComparer.OrdinalIgnoreCase);
var tocEntries = providerNamespaces.Select(provider =>
new RootTocEntry(
Name: titleMapping.TryGetValue(provider, out var title) ? title : provider,
DisplayName: provider,
MainHref: $"./{provider.ToLowerInvariant()}/toc.yml",
ChangeLogHref: $"./{provider.ToLowerInvariant()}/change-log/toc.yml"))
.OrderBy(x => x.Name, StringComparer.OrdinalIgnoreCase)
.ToArray();
sb.Append($"""
- name: Overview
items:
- name: Define resources
href: index.md
""");
sb.Append($"""
- name: Change log
items:
""");
foreach (var tocEntry in tocEntries)
{
sb.Append($"""
- name: {tocEntry.Name}
href: {tocEntry.ChangeLogHref}
""");
}
sb.Append($"""
- name: Reference
expanded: true
items:
""");
foreach (var tocEntry in tocEntries)
{
sb.Append($"""
- name: {tocEntry.Name}
href: {tocEntry.MainHref}
""");
}
return sb.ToString();
}