Commit 24dfb749 authored by Rob Pike's avatar Rob Pike

change IsDecimalDigit to IsDigit because Decimal is redundant

R=rsc
DELTA=792  (398 added, 383 deleted, 11 changed)
OCL=33919
CL=33921
parent 79606b99
......@@ -188,7 +188,7 @@ func isLetter(ch int) bool {
func isDigit(ch int) bool {
return
'0' <= ch && ch <= '9' ||
ch >= 0x80 && unicode.IsDecimalDigit(ch);
ch >= 0x80 && unicode.IsDigit(ch);
}
......
......@@ -6,7 +6,7 @@ include $(GOROOT)/src/Make.$(GOARCH)
TARG=unicode
GOFILES=\
decimaldigit.go\
digit.go\
digittables.go\
letter.go\
lettertables.go\
......
......@@ -4,7 +4,10 @@
package unicode
// IsDecimalDigit reports whether the rune is a decimal digit.
func IsDecimalDigit(rune int) bool {
return Is(DecimalDigit, rune);
// IsDigit reports whether the rune is a decimal digit.
func IsDigit(rune int) bool {
if rune < 0x100 { // quick ASCII (Latin-1, really) check
return '0' <= rune && rune <= '9'
}
return Is(Digit, rune);
}
......@@ -10,7 +10,7 @@ import "testing"
// grep '^....;[^;]*;Nd;' UnicodeData.txt
// To generate this table:
// ,s/([^;]+).+/ 0x\1, \/\/ &/g
var testDecimal = []int{
var testDigit = []int{
0x0030, // 0030;DIGIT ZERO;Nd;0;EN;;0;0;0;N;;;;;
0x0031, // 0031;DIGIT ONE;Nd;0;EN;;1;1;1;N;;;;;
0x0032, // 0032;DIGIT TWO;Nd;0;EN;;2;2;2;N;;;;;
......@@ -358,15 +358,15 @@ var testLetter = []int{
0x2fa1d,
}
func TestIsDecimalDigit(t *testing.T) {
for i, r := range testDecimal {
if !IsDecimalDigit(r) {
t.Errorf("IsDecimalDigit(%#x) = false, want true\n", r);
func TestDigit(t *testing.T) {
for i, r := range testDigit {
if !IsDigit(r) {
t.Errorf("IsDigit(%#x) = false, want true\n", r);
}
}
for i, r := range testLetter {
if IsDecimalDigit(r) {
t.Errorf("IsDecimalDigit(%#x) = true, want false\n", r);
if IsDigit(r) {
t.Errorf("IsDigit(%#x) = true, want false\n", r);
}
}
}
// Generated by running
// tables --digits=true --url=http://www.unicode.org/Public/5.1.0/ucd/UnicodeData.txt
// maketables --digits=true --url=http://www.unicode.org/Public/5.1.0/ucd/UnicodeData.txt
// DO NOT EDIT
package unicode
// DecimalDigit is the set of Unicode characters with the "decimal digit" property.
var DecimalDigit = decimalDigit
var decimalDigit = []Range {
// Digit is the set of Unicode characters with the "decimal digit" (Nd) property.
var Digit = digit
var digit = []Range {
Range{0x0030, 0x0039, 1},
Range{0x0660, 0x0669, 1},
Range{0x06f0, 0x06f9, 1},
......
......@@ -18,8 +18,7 @@ type Range struct {
func Is(ranges []Range, rune int) bool {
// common case: rune is ASCII or Latin-1
if rune < 0x100 {
for i := 0; i < len(ranges); i++ {
r := ranges[i];
for i, r := range ranges {
if rune > r.Hi {
continue;
}
......@@ -51,20 +50,33 @@ func Is(ranges []Range, rune int) bool {
// IsUpper reports whether the rune is an upper case letter.
func IsUpper(rune int) bool {
if rune < 0x80 { // quick ASCII check
return 'A' <= rune && rune <= 'Z';
}
return Is(Upper, rune);
}
// IsLower reports whether the rune is a lower case letter.
func IsLower(rune int) bool {
if rune < 0x80 { // quick ASCII check
return 'a' <= rune && rune <= 'z';
}
return Is(Lower, rune);
}
// IsTitle reports whether the rune is a title case letter.
func IsTitle(rune int) bool {
if rune < 0x80 { // quick ASCII check
return false;
}
return Is(Title, rune);
}
// IsLetter reports whether the rune is a letter.
func IsLetter(rune int) bool {
if rune < 0x80 { // quick ASCII check
rune &^= ' ';
return 'A' <= rune && rune <= 'Z';
}
return Is(Letter, rune);
}
......@@ -172,7 +172,7 @@ func main() {
resp.Body.Close();
fmt.Printf(
"// Generated by running\n"
"// tables --digits=%t --url=%s\n"
"// maketables --digits=%t --url=%s\n"
"// DO NOT EDIT\n\n"
"package unicode\n",
*digits,
......@@ -183,9 +183,9 @@ func main() {
// available to clients.
if *digits {
dumpRange(
"\n// DecimalDigit is the set of Unicode characters with the \"decimal digit\" property.\n"
"var DecimalDigit = decimalDigit\n"
"var decimalDigit = []Range {\n",
"\n// Digit is the set of Unicode characters with the \"decimal digit\" (Nd) property.\n"
"var Digit = digit\n"
"var digit = []Range {\n",
func(code int) bool { return chars[code].category == "Nd" },
"}\n"
);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment