From cdbdae9715bf1ff501e4f22f7e066d5729ec1fb3 Mon Sep 17 00:00:00 2001 From: Eli Bendersky Date: Fri, 7 Jun 2019 06:12:30 -0700 Subject: [PATCH] Do progress reporting during parsing/processing stage, not HTML render stage --- tools/generate.go | 75 ++++++++++++++++++++++++----------------------- 1 file changed, 39 insertions(+), 36 deletions(-) diff --git a/tools/generate.go b/tools/generate.go index 1b79de8..24a5a26 100644 --- a/tools/generate.go +++ b/tools/generate.go @@ -225,40 +225,43 @@ func parseAndRenderSegs(sourcePath string) ([]*Seg, string) { } func parseExamples() []*Example { - if verbose() { - fmt.Println("Parsing examples") - } - exampleNames := readLines("examples.txt") - examples := make([]*Example, 0) - for _, exampleName := range exampleNames { - if (exampleName != "") && !strings.HasPrefix(exampleName, "#") { - example := Example{Name: exampleName} - exampleID := strings.ToLower(exampleName) - exampleID = strings.Replace(exampleID, " ", "-", -1) - exampleID = strings.Replace(exampleID, "/", "-", -1) - exampleID = strings.Replace(exampleID, "'", "", -1) - exampleID = dashPat.ReplaceAllString(exampleID, "-") - example.ID = exampleID - example.Segs = make([][]*Seg, 0) - sourcePaths := mustGlob("examples/" + exampleID + "/*") - for _, sourcePath := range sourcePaths { - if strings.HasSuffix(sourcePath, ".hash") { - example.GoCodeHash, example.URLHash = parseHashFile(sourcePath) - } else { - sourceSegs, filecontents := parseAndRenderSegs(sourcePath) - if filecontents != "" { - example.GoCode = filecontents - } - example.Segs = append(example.Segs, sourceSegs) - } - } - newCodeHash := sha1Sum(example.GoCode) - if example.GoCodeHash != newCodeHash { - example.URLHash = resetURLHashFile(newCodeHash, example.GoCode, "examples/"+example.ID+"/"+example.ID+".hash") - } - examples = append(examples, &example) + var exampleNames []string + for _, line := range readLines("examples.txt") { + if line != "" && !strings.HasPrefix(line, "#") { + exampleNames = append(exampleNames, line) } } + examples := make([]*Example, 0) + for i, exampleName := range exampleNames { + if verbose() { + fmt.Printf("Processing %s [%d/%d]\n", exampleName, i+1, len(exampleNames)) + } + example := Example{Name: exampleName} + exampleID := strings.ToLower(exampleName) + exampleID = strings.Replace(exampleID, " ", "-", -1) + exampleID = strings.Replace(exampleID, "/", "-", -1) + exampleID = strings.Replace(exampleID, "'", "", -1) + exampleID = dashPat.ReplaceAllString(exampleID, "-") + example.ID = exampleID + example.Segs = make([][]*Seg, 0) + sourcePaths := mustGlob("examples/" + exampleID + "/*") + for _, sourcePath := range sourcePaths { + if strings.HasSuffix(sourcePath, ".hash") { + example.GoCodeHash, example.URLHash = parseHashFile(sourcePath) + } else { + sourceSegs, filecontents := parseAndRenderSegs(sourcePath) + if filecontents != "" { + example.GoCode = filecontents + } + example.Segs = append(example.Segs, sourceSegs) + } + } + newCodeHash := sha1Sum(example.GoCode) + if example.GoCodeHash != newCodeHash { + example.URLHash = resetURLHashFile(newCodeHash, example.GoCode, "examples/"+example.ID+"/"+example.ID+".hash") + } + examples = append(examples, &example) + } for i, example := range examples { if i < (len(examples) - 1) { example.NextExample = examples[i+1] @@ -281,13 +284,13 @@ func renderIndex(examples []*Example) { } func renderExamples(examples []*Example) { + if verbose() { + fmt.Println("Generating HTML") + } exampleTmpl := template.New("example") _, err := exampleTmpl.Parse(mustReadFile("templates/example.tmpl")) check(err) - for i, example := range examples { - if verbose() { - fmt.Printf("Rendering %s [%d/%d]\n", example.Name, i, len(examples)) - } + for _, example := range examples { exampleF, err := os.Create(siteDir + "/" + example.ID) check(err) exampleTmpl.Execute(exampleF, example)