gobyexample/tools/measure.go
2014-02-23 15:42:54 +08:00

46 lines
985 B
Go

package main
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
"regexp"
"strings"
"unicode/utf8"
)
func check(err error) {
if err != nil {
panic(err)
}
}
func readLines(path string) []string {
srcBytes, err := ioutil.ReadFile(path)
check(err)
return strings.Split(string(srcBytes), "\n")
}
var commentPat = regexp.MustCompile("\\s*\\/\\/")
func main() {
sourcePaths, err := filepath.Glob("./examples/*/*")
check(err)
foundLongFile := false
for _, sourcePath := range sourcePaths {
foundLongLine := false
lines := readLines(sourcePath)
for i, line := range lines {
if !foundLongLine && !commentPat.MatchString(line) && (utf8.RuneCountInString(line) > 58) {
fmt.Printf("measure: %s:%d\n", sourcePath, i+1)
foundLongLine = true
foundLongFile = true
}
}
}
if foundLongFile {
os.Exit(1)
}
}