in cqlprotodoc/main.go [135:169]
func processDocument(inputPath, outputPath string) (outErr error) {
data, err := os.ReadFile(inputPath)
if err != nil {
return err
}
doc, err := spec.Parse(string(data))
if err != nil {
return err
}
sectionNumbers := make(map[string]struct{})
for _, s := range doc.Sections {
sectionNumbers[s.Number] = struct{}{}
}
tocNumbers := make(map[string]struct{})
for _, t := range doc.TOC {
tocNumbers[t.Number] = struct{}{}
}
checkSectionLinks(doc, sectionNumbers, tocNumbers)
f, err := os.Create(outputPath)
if err != nil {
return err
}
defer func() {
closeErr := f.Close()
if closeErr != nil && outErr == nil {
outErr = closeErr
}
}()
return tmpl.Execute(f, templateData{
Document: doc,
LicenseHTML: formatBody(doc.License, sectionNumbers),
TOCTree: buildTOCTree(doc.TOC, sectionNumbers),
Sections: buildSections(doc.Sections, sectionNumbers),
})
}