From d1f153c7073d9f4fb80240249b99ef47120a3df0 Mon Sep 17 00:00:00 2001 From: Mark McGranaghan Date: Mon, 1 Oct 2012 15:31:43 -0700 Subject: [PATCH] next-gen toolchain --- .gitignore | 2 ++ README.md | 8 ++------ tool/compile | 6 ++++++ tool/gofmt | 2 +- tool/{ => src}/generate.go | 30 ++++++++++++++++++++++++------ tool/{ => src}/number.go | 1 + 6 files changed, 36 insertions(+), 13 deletions(-) create mode 100755 tool/compile rename tool/{ => src}/generate.go (86%) rename tool/{ => src}/number.go (97%) diff --git a/.gitignore b/.gitignore index d858ecc..e58e6db 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ build tool/generate +tool/number + diff --git a/README.md b/README.md index 2d3200b..84e45dc 100644 --- a/README.md +++ b/README.md @@ -18,12 +18,8 @@ $ tool/gofmt ``` -### Generating +### Building ```console -$ cd tool -$ go build generate.go -$ cd .. -$ tool/generate src/063-line-filters/line-filters.go 'Line Filters' > build/line-filters.html -$ prince build/line-filters.html -o build/line-filters.pdf +$ tool/build ``` diff --git a/tool/compile b/tool/compile new file mode 100755 index 0000000..ce6f04b --- /dev/null +++ b/tool/compile @@ -0,0 +1,6 @@ +#!/bin/bash + +set -e + +go build -o tool/generate tool/src/generate.go +go build -o tool/number tool/src/number.go diff --git a/tool/gofmt b/tool/gofmt index 331602b..6534c38 100755 --- a/tool/gofmt +++ b/tool/gofmt @@ -3,4 +3,4 @@ set -e set -o pipefail -ls tool/*.go src/*/*.go | xargs -n 1 gofmt -tabs=false -tabwidth=4 -w=true +ls tool/src/*.go src/*/*.go | xargs -n 1 gofmt -tabs=false -tabwidth=4 -w=true diff --git a/tool/generate.go b/tool/src/generate.go similarity index 86% rename from tool/generate.go rename to tool/src/generate.go index 98e8d84..5ef1b16 100644 --- a/tool/generate.go +++ b/tool/src/generate.go @@ -54,6 +54,18 @@ func whichLexer(path string) string { return "" } +func progress(msg string) { + if os.Getenv("DEBUG") != "1" { + fmt.Fprint(os.Stderr, msg) + } +} + +func debug(msg string) { + if os.Getenv("DEBUG") == "1" { + fmt.Fprintln(os.Stderr, msg) + } +} + var docsPat = regexp.MustCompile("^\\s*(\\/\\/|#)\\s") var headerPat = regexp.MustCompile("^\\s*(\\/\\/|#)\\s#+\\s") @@ -83,7 +95,7 @@ func main() { `) for _, sourcePath := range os.Args[1:] { - fmt.Fprint(os.Stderr, ".") + progress(".") lexer := whichLexer(sourcePath) lines := readLines(sourcePath) @@ -98,9 +110,12 @@ func main() { lastSeg := segs[len(segs)-1] lastHeader := lastSeen == "header" lastDocs := lastSeen == "docs" - newHeader := (lastSeen != "header") && lastSeg.docs != "" - newDocs := (lastSeen != "docs") && lastSeg.docs != "" - newCode := (lastSeen != "code") && lastSeg.code != "" + newHeader := lastSeen != "header" && lastSeg.docs != "" + newDocs := lastSeen == "code" || lastSeen == "header" + newCode := (lastSeen != "code" && lastSeg.code != "") || lastSeen == "header" + if newHeader || newDocs || newCode { + debug("NEWSEG") + } if headerMatch || (emptyMatch && lastHeader) { trimmed := docsPat.ReplaceAllString(line, "") if newHeader { @@ -109,15 +124,18 @@ func main() { } else { lastSeg.docs = lastSeg.docs + "\n" + trimmed } + debug("HEAD") lastSeen = "header" } else if docsMatch || (emptyMatch && lastDocs) { trimmed := docsPat.ReplaceAllString(line, "") if newDocs { + debug("NEWSEG") newSeg := seg{docs: trimmed, code: ""} segs = append(segs, &newSeg) } else { lastSeg.docs = lastSeg.docs + "\n" + trimmed } + debug("DOCS") lastSeen = "docs" } else { if newCode { @@ -126,6 +144,7 @@ func main() { } else { lastSeg.code = lastSeg.code + "\n" + line } + debug("CODE") lastSeen = "code" } } @@ -146,7 +165,7 @@ func main() { codeClasses = codeClasses + " empty" } fmt.Printf( - ` + ` %s %s `, seg.docsRendered, codeClasses, seg.codeRendered) @@ -154,5 +173,4 @@ func main() { } fmt.Print(``) - fmt.Fprint(os.Stderr, "\n") } diff --git a/tool/number.go b/tool/src/number.go similarity index 97% rename from tool/number.go rename to tool/src/number.go index aa87dc5..7ee7de7 100644 --- a/tool/number.go +++ b/tool/src/number.go @@ -70,6 +70,7 @@ func main() { oldName := sourceMap[indexName] newName := fmt.Sprintf("%03d-%s", index+1, indexName) if oldName != newName { + fmt.Println(oldName, "->", newName) os.Rename("src/"+oldName, "src/"+newName) } }