diff options
author | Ondřej Surý <ondrej@sury.org> | 2011-02-14 13:23:51 +0100 |
---|---|---|
committer | Ondřej Surý <ondrej@sury.org> | 2011-02-14 13:23:51 +0100 |
commit | 758ff64c69e34965f8af5b2d6ffd65e8d7ab2150 (patch) | |
tree | 6d6b34f8c678862fe9b56c945a7b63f68502c245 /src/pkg/unicode/maketables.go | |
parent | 3e45412327a2654a77944249962b3652e6142299 (diff) | |
download | golang-upstream/2011-02-01.1.tar.gz |
Imported Upstream version 2011-02-01.1upstream/2011-02-01.1
Diffstat (limited to 'src/pkg/unicode/maketables.go')
-rw-r--r-- | src/pkg/unicode/maketables.go | 66 |
1 files changed, 33 insertions, 33 deletions
diff --git a/src/pkg/unicode/maketables.go b/src/pkg/unicode/maketables.go index 081e1a119..0c367673e 100644 --- a/src/pkg/unicode/maketables.go +++ b/src/pkg/unicode/maketables.go @@ -32,7 +32,7 @@ func main() { var dataURL = flag.String("data", "", "full URL for UnicodeData.txt; defaults to --url/UnicodeData.txt") var url = flag.String("url", - "http://www.unicode.org/Public/5.2.0/ucd/", + "http://www.unicode.org/Public/6.0.0/ucd/", "URL of Unicode database directory") var tablelist = flag.String("tables", "all", @@ -50,8 +50,8 @@ var test = flag.Bool("test", false, "test existing tables; can be used to compare web data with package data") -var scriptRe = regexp.MustCompile(`([0-9A-F]+)(\.\.[0-9A-F]+)? *; ([A-Za-z_]+)`) -var die = log.New(os.Stderr, nil, "", log.Lexit|log.Lshortfile) +var scriptRe = regexp.MustCompile(`^([0-9A-F]+)(\.\.[0-9A-F]+)? *; ([A-Za-z_]+)$`) +var logger = log.New(os.Stderr, "", log.Lshortfile) var category = map[string]bool{"letter": true} // Nd Lu etc. letter is a special case @@ -141,11 +141,11 @@ const ( func parseCategory(line string) (state State) { field := strings.Split(line, ";", -1) if len(field) != NumField { - die.Logf("%5s: %d fields (expected %d)\n", line, len(field), NumField) + logger.Fatalf("%5s: %d fields (expected %d)\n", line, len(field), NumField) } point, err := strconv.Btoui64(field[FCodePoint], 16) if err != nil { - die.Log("%.5s...:", err) + logger.Fatalf("%.5s...: %s", line, err) } lastChar = uint32(point) if point == 0 { @@ -157,7 +157,7 @@ func parseCategory(line string) (state State) { char := &chars[point] char.field = field if char.codePoint != 0 { - die.Logf("point %U reused\n") + logger.Fatalf("point %U reused", point) } char.codePoint = lastChar char.category = field[FGeneralCategory] @@ -167,7 +167,7 @@ func parseCategory(line string) (state State) { // Decimal digit _, err := strconv.Atoi(field[FNumericValue]) if err != nil { - die.Log("%U: bad numeric field: %s", point, err) + logger.Fatalf("%U: bad numeric field: %s", point, err) } case "Lu": char.letter(field[FCodePoint], field[FSimpleLowercaseMapping], field[FSimpleTitlecaseMapping]) @@ -208,7 +208,7 @@ func (char *Char) letterValue(s string, cas string) int { v, err := strconv.Btoui64(s, 16) if err != nil { char.dump(cas) - die.Logf("%U: bad letter(%s): %s", char.codePoint, s, err) + logger.Fatalf("%U: bad letter(%s): %s", char.codePoint, s, err) } return int(v) } @@ -242,7 +242,7 @@ func version() string { return f } } - die.Log("unknown version") + logger.Fatal("unknown version") return "Unknown" } @@ -260,10 +260,10 @@ func loadChars() { } resp, _, err := http.Get(*dataURL) if err != nil { - die.Log(err) + logger.Fatal(err) } if resp.StatusCode != 200 { - die.Log("bad GET status for UnicodeData.txt", resp.Status) + logger.Fatal("bad GET status for UnicodeData.txt", resp.Status) } input := bufio.NewReader(resp.Body) var first uint32 = 0 @@ -273,21 +273,21 @@ func loadChars() { if err == os.EOF { break } - die.Log(err) + logger.Fatal(err) } switch parseCategory(line[0 : len(line)-1]) { case SNormal: if first != 0 { - die.Logf("bad state normal at U+%04X", lastChar) + logger.Fatalf("bad state normal at U+%04X", lastChar) } case SFirst: if first != 0 { - die.Logf("bad state first at U+%04X", lastChar) + logger.Fatalf("bad state first at U+%04X", lastChar) } first = lastChar case SLast: if first == 0 { - die.Logf("bad state last at U+%04X", lastChar) + logger.Fatalf("bad state last at U+%04X", lastChar) } for i := first + 1; i <= lastChar; i++ { chars[i] = chars[first] @@ -336,7 +336,7 @@ func printCategories() { ndecl := 0 for _, name := range list { if _, ok := category[name]; !ok { - die.Log("unknown category", name) + logger.Fatal("unknown category", name) } // We generate an UpperCase name to serve as concise documentation and an _UnderScored // name to store the data. This stops godoc dumping all the tables but keeps them @@ -382,7 +382,7 @@ func printCategories() { type Op func(code int) bool -const format = "\tRange{0x%04x, 0x%04x, %d},\n" +const format = "\t{0x%04x, 0x%04x, %d},\n" func dumpRange(header string, inCategory Op) { fmt.Print(header) @@ -437,11 +437,11 @@ func dumpRange(header string, inCategory Op) { func fullCategoryTest(list []string) { for _, name := range list { if _, ok := category[name]; !ok { - die.Log("unknown category", name) + logger.Fatal("unknown category", name) } r, ok := unicode.Categories[name] if !ok { - die.Log("unknown table", name) + logger.Fatal("unknown table", name) } if name == "letter" { verifyRange(name, letterOp, r) @@ -475,21 +475,21 @@ func parseScript(line string, scripts map[string][]Script) { } field := strings.Split(line, ";", -1) if len(field) != 2 { - die.Logf("%s: %d fields (expected 2)\n", line, len(field)) + logger.Fatalf("%s: %d fields (expected 2)\n", line, len(field)) } - matches := scriptRe.MatchStrings(line) + matches := scriptRe.FindStringSubmatch(line) if len(matches) != 4 { - die.Logf("%s: %d matches (expected 3)\n", line, len(matches)) + logger.Fatalf("%s: %d matches (expected 3)\n", line, len(matches)) } lo, err := strconv.Btoui64(matches[1], 16) if err != nil { - die.Log("%.5s...:", err) + logger.Fatalf("%.5s...: %s", line, err) } hi := lo if len(matches[2]) > 2 { // ignore leading .. hi, err = strconv.Btoui64(matches[2][2:], 16) if err != nil { - die.Log("%.5s...:", err) + logger.Fatalf("%.5s...: %s", line, err) } } name := matches[3] @@ -515,11 +515,11 @@ func foldAdjacent(r []Script) []unicode.Range { func fullScriptTest(list []string, installed map[string][]unicode.Range, scripts map[string][]Script) { for _, name := range list { if _, ok := scripts[name]; !ok { - die.Log("unknown script", name) + logger.Fatal("unknown script", name) } _, ok := installed[name] if !ok { - die.Log("unknown table", name) + logger.Fatal("unknown table", name) } for _, script := range scripts[name] { for r := script.lo; r <= script.hi; r++ { @@ -551,10 +551,10 @@ func printScriptOrProperty(doProps bool) { var err os.Error resp, _, err := http.Get(*url + file) if err != nil { - die.Log(err) + logger.Fatal(err) } if resp.StatusCode != 200 { - die.Log("bad GET status for ", file, ":", resp.Status) + logger.Fatal("bad GET status for ", file, ":", resp.Status) } input := bufio.NewReader(resp.Body) for { @@ -563,7 +563,7 @@ func printScriptOrProperty(doProps bool) { if err == os.EOF { break } - die.Log(err) + logger.Fatal(err) } parseScript(line[0:len(line)-1], table) } @@ -805,14 +805,14 @@ func printCaseRange(lo, hi *caseState) { } switch { case hi.point > lo.point && lo.isUpperLower(): - fmt.Printf("\tCaseRange{0x%04X, 0x%04X, d{UpperLower, UpperLower, UpperLower}},\n", + fmt.Printf("\t{0x%04X, 0x%04X, d{UpperLower, UpperLower, UpperLower}},\n", lo.point, hi.point) case hi.point > lo.point && lo.isLowerUpper(): - die.Log("LowerUpper sequence: should not happen: U+%04X. If it's real, need to fix To()", lo.point) - fmt.Printf("\tCaseRange{0x%04X, 0x%04X, d{LowerUpper, LowerUpper, LowerUpper}},\n", + logger.Fatalf("LowerUpper sequence: should not happen: U+%04X. If it's real, need to fix To()", lo.point) + fmt.Printf("\t{0x%04X, 0x%04X, d{LowerUpper, LowerUpper, LowerUpper}},\n", lo.point, hi.point) default: - fmt.Printf("\tCaseRange{0x%04X, 0x%04X, d{%d, %d, %d}},\n", + fmt.Printf("\t{0x%04X, 0x%04X, d{%d, %d, %d}},\n", lo.point, hi.point, lo.deltaToUpper, lo.deltaToLower, lo.deltaToTitle) } |