func processDocument()

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),
	})
}