blob: 48247231223ad574eabba293dea16b6654e21d60 [file] [log] [blame]
// Copyright 2022 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package docgen
import (
"fmt"
"io"
"sort"
)
func WriteToc(settings WriteSettings, index *Index, f io.Writer) {
fmt.Fprintf(f, "# Generated by cppdocgen. Do not edit.\n")
fmt.Fprintf(f, "toc:\n")
fmt.Fprintf(f, "- title: \"Overview\"\n")
fmt.Fprintf(f, " path: %s%s\n", settings.TocPath, "index.md")
fmt.Fprintf(f, "- heading: \"%s headers\"\n", settings.LibName)
// Sort the headers by name for the output (the map ordering is not stable).
Headers := make([]*Header, 0, len(index.Headers))
for _, h := range index.Headers {
Headers = append(Headers, h)
}
sort.Sort(headerByName(Headers))
for _, h := range Headers {
title := h.CustomTitle()
if title == "" {
fmt.Fprintf(f, "- title: \"%s\"\n", settings.GetUserIncludePath(h.Name))
} else {
fmt.Fprintf(f, "- title: \"%s\"\n", title)
}
fmt.Fprintf(f, " path: %s%s\n", settings.TocPath, h.ReferenceFileName())
}
}