diff options
Diffstat (limited to 'src/pkg/unicode/maketables.go')
-rw-r--r-- | src/pkg/unicode/maketables.go | 30 |
1 files changed, 12 insertions, 18 deletions
diff --git a/src/pkg/unicode/maketables.go b/src/pkg/unicode/maketables.go index 73bfd2cbf..219140ea8 100644 --- a/src/pkg/unicode/maketables.go +++ b/src/pkg/unicode/maketables.go @@ -36,22 +36,22 @@ var url = flag.String("url", "URL of Unicode database directory") var tablelist = flag.String("tables", "all", - "comma-separated list of which tables to generate; can be letter"); + "comma-separated list of which tables to generate; can be letter") var scriptlist = flag.String("scripts", "all", - "comma-separated list of which script tables to generate"); + "comma-separated list of which script tables to generate") var proplist = flag.String("props", "all", - "comma-separated list of which property tables to generate"); + "comma-separated list of which property tables to generate") var cases = flag.Bool("cases", true, - "generate case tables"); + "generate case tables") var test = flag.Bool("test", false, - "test existing tables; can be used to compare web data with package data"); -var scriptRe *regexp.Regexp + "test existing tables; can be used to compare web data with package data") -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 die = log.New(os.Stderr, nil, "", log.Lexit|log.Lshortfile) var category = map[string] bool{ "letter":true } // Nd Lu etc. letter is a special case @@ -125,8 +125,6 @@ var props = make(map[string] []Script) // a property looks like a script; can sh var lastChar uint32 = 0 -const scriptParseExpression = `([0-9A-F]+)(\.\.[0-9A-F]+)? *; ([A-Za-z_]+)` - // In UnicodeData.txt, some ranges are marked like this: // 3400;<CJK Ideograph Extension A, First>;Lo;0;L;;;;;N;;;;; // 4DB5;<CJK Ideograph Extension A, Last>;Lo;0;L;;;;;N;;;;; @@ -166,7 +164,7 @@ func parseCategory(line string) (state State) { switch char.category { case "Nd": // Decimal digit - v, err := strconv.Atoi(field[FNumericValue]); + _, err := strconv.Atoi(field[FNumericValue]); if err != nil { die.Log("U+%04x: bad numeric field: %s", point, err); } @@ -460,7 +458,7 @@ func fullCategoryTest(list []string) { } func verifyRange(name string, inCategory Op, table []unicode.Range) { - for i, c := range chars { + for i := range chars { web := inCategory(i); pkg := unicode.Is(table, i); if web != pkg { @@ -499,7 +497,7 @@ func parseScript(line string, scripts map[string] []Script) { } name := matches[3]; s, ok := scripts[name]; - if len(s) == cap(s) { + if !ok || len(s) == cap(s) { ns := make([]Script, len(s), len(s)+100); for i, sc := range s { ns[i] = sc @@ -532,7 +530,7 @@ func fullScriptTest(list []string, installed map[string] []unicode.Range, script if _, ok := scripts[name]; !ok { die.Log("unknown script", name); } - r, ok := installed[name]; + _, ok := installed[name]; if !ok { die.Log("unknown table", name); } @@ -564,10 +562,6 @@ func printScriptOrProperty(doProps bool) { return } var err os.Error; - scriptRe, err = regexp.Compile(scriptParseExpression); - if err != nil { - die.Log("re error:", err) - } resp, _, err := http.Get(*url + file); if err != nil { die.Log(err); @@ -801,7 +795,7 @@ func printCases() { var startState *caseState; // the start of a run; nil for not active var prevState = &caseState{}; // the state of the previous character - for i, c := range chars { + for i := range chars { state := getCaseState(i); if state.adjacent(prevState) { prevState = state; |