From a8f3954cd5abd07b7aced8d9a9e712c9fde3b40b Mon Sep 17 00:00:00 2001 From: Mark McGranaghan Date: Thu, 20 Sep 2012 22:04:07 -0700 Subject: [PATCH] prep for first renumber --- 11b-case.go => 11x-case.go | 0 README.md | 8 ++++ tool/index.txt | 96 ++++++++++++++++++++++++++++++++++++++ tool/renumber.go | 44 +++++++++++++++++ 4 files changed, 148 insertions(+) rename 11b-case.go => 11x-case.go (100%) create mode 100644 tool/index.txt create mode 100644 tool/renumber.go diff --git a/11b-case.go b/11x-case.go similarity index 100% rename from 11b-case.go rename to 11x-case.go diff --git a/README.md b/README.md index 957d5f6..8104a20 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,11 @@ ## gbe-book Go by Example book source. + + +### Reordering + +```bash +$ mate tool/index.txt +$ go run tool/reorder.go +``` diff --git a/tool/index.txt b/tool/index.txt new file mode 100644 index 0000000..0c788a3 --- /dev/null +++ b/tool/index.txt @@ -0,0 +1,96 @@ +hello-world +values +variables +mutation +literal +constant +reading-input +for +if-else +case +arrays +sum +range +floats +slices +maps +ok-guards +nesting +functions +returns +varargs +closures +recursion +defer +panic +recover +values +pointers +new +structs +fields +methods +embedding +interfaces +goroutines +concurrency +channels +buffering +directions +synchronization +select +timeout +string-fns +bytes +args +burstable-rate-limiting +dns +elapsed +email +enumerable +env +epoch +errors +exec +exits +file-open +file-read +file-write +flags +http-client-basic +http-client +http-server-basic +http-server-canonical-host +http-server-graceful-shutdown +http-server-log +http-server-middleware +http-server-routing +http-server-static-dynamic +http-server-static-select +http-server-static +http-server-status-code +http-server +https-client +https-server +json +number-parsing +postgres +rand +rate-limiting +redis +regexs +scatter-gather +sha1 +signals +sort +sortby +spawn +string-formatting +tcp-client +tcp-server +tickers +time +timers +url +users +worker-pool \ No newline at end of file diff --git a/tool/renumber.go b/tool/renumber.go new file mode 100644 index 0000000..f5e7071 --- /dev/null +++ b/tool/renumber.go @@ -0,0 +1,44 @@ +// Renumber the .go content files according to the +// order in index.txt. + +package main + +import ( + "fmt" + "io/ioutil" + "strings" + "regexp" +) + +func main() { + // read names of source files + sourceNames := make([]string, 0) + sourceMap := make(map[string]string) + fileInfos, dirErr := ioutil.ReadDir("./") + if dirErr != nil { panic(dirErr) } + baseTrimmer, _ := regexp.Compile("([0-9x]+-)|(.go)") + for _, fi := range fileInfos { + baseName := baseTrimmer.ReplaceAllString(fi.Name(), "") + if baseName != ".git" && baseName != "tool" && baseName != "README.md" { + sourceNames = append(sourceNames, baseName) + sourceMap[baseName] = fi.Name() + } + } + + // read names from index + indexBytes, idxErr := ioutil.ReadFile("tool/index.txt") + if idxErr != nil { panic (idxErr) } + indexNames := strings.Split(string(indexBytes), "\n") + + // sanity check two lists + if len(sourceNames) != len(indexNames) { + panic("mismatched names") + } + + // rename some stuff + for index, indexName := range indexNames { + oldName := sourceMap[indexName] + newName := fmt.Sprintf("%d-%s.go", index+1, indexName) + os.Rename(oldName, newName) + } +}