Commit 94e69155 authored by Rob Pike's avatar Rob Pike

unicode tables for all categories

maketables now has a --test option to verify the data.

R=rsc
DELTA=3087  (1982 added, 1001 deleted, 104 changed)
OCL=33947
CL=33950
parent 5cbc96d9
......@@ -7,15 +7,22 @@ include $(GOROOT)/src/Make.$(GOARCH)
TARG=unicode
GOFILES=\
digit.go\
digittables.go\
letter.go\
lettertables.go\
tables.go\
include $(GOROOT)/src/Make.pkg
tables:
maketables: maketables.go
$(GC) maketables.go
$(LD) -o maketables maketables.$O
maketables --digits > digittables.go
maketables > lettertables.go
tables: maketables
$(GC) maketables.go
$(LD) -o maketables maketables.$O
./maketables --tables=all > tables.go
rm -f maketables
testtables: maketables
echo '***' Be sure to make tables and make install first
./maketables -test
rm -f maketables
......@@ -6,356 +6,98 @@ package unicode
import "testing"
// To get data:
// grep '^....;[^;]*;Nd;' UnicodeData.txt
// To generate this table:
// ,s/([^;]+).+/ 0x\1, \/\/ &/g
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;;;;;
0x0033, // 0033;DIGIT THREE;Nd;0;EN;;3;3;3;N;;;;;
0x0034, // 0034;DIGIT FOUR;Nd;0;EN;;4;4;4;N;;;;;
0x0035, // 0035;DIGIT FIVE;Nd;0;EN;;5;5;5;N;;;;;
0x0036, // 0036;DIGIT SIX;Nd;0;EN;;6;6;6;N;;;;;
0x0037, // 0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
0x0038, // 0038;DIGIT EIGHT;Nd;0;EN;;8;8;8;N;;;;;
0x0039, // 0039;DIGIT NINE;Nd;0;EN;;9;9;9;N;;;;;
0x0660, // 0660;ARABIC-INDIC DIGIT ZERO;Nd;0;AN;;0;0;0;N;;;;;
0x0661, // 0661;ARABIC-INDIC DIGIT ONE;Nd;0;AN;;1;1;1;N;;;;;
0x0662, // 0662;ARABIC-INDIC DIGIT TWO;Nd;0;AN;;2;2;2;N;;;;;
0x0663, // 0663;ARABIC-INDIC DIGIT THREE;Nd;0;AN;;3;3;3;N;;;;;
0x0664, // 0664;ARABIC-INDIC DIGIT FOUR;Nd;0;AN;;4;4;4;N;;;;;
0x0665, // 0665;ARABIC-INDIC DIGIT FIVE;Nd;0;AN;;5;5;5;N;;;;;
0x0666, // 0666;ARABIC-INDIC DIGIT SIX;Nd;0;AN;;6;6;6;N;;;;;
0x0667, // 0667;ARABIC-INDIC DIGIT SEVEN;Nd;0;AN;;7;7;7;N;;;;;
0x0668, // 0668;ARABIC-INDIC DIGIT EIGHT;Nd;0;AN;;8;8;8;N;;;;;
0x0669, // 0669;ARABIC-INDIC DIGIT NINE;Nd;0;AN;;9;9;9;N;;;;;
0x06F0, // 06F0;EXTENDED ARABIC-INDIC DIGIT ZERO;Nd;0;EN;;0;0;0;N;EASTERN ARABIC-INDIC DIGIT ZERO;;;;
0x06F1, // 06F1;EXTENDED ARABIC-INDIC DIGIT ONE;Nd;0;EN;;1;1;1;N;EASTERN ARABIC-INDIC DIGIT ONE;;;;
0x06F2, // 06F2;EXTENDED ARABIC-INDIC DIGIT TWO;Nd;0;EN;;2;2;2;N;EASTERN ARABIC-INDIC DIGIT TWO;;;;
0x06F3, // 06F3;EXTENDED ARABIC-INDIC DIGIT THREE;Nd;0;EN;;3;3;3;N;EASTERN ARABIC-INDIC DIGIT THREE;;;;
0x06F4, // 06F4;EXTENDED ARABIC-INDIC DIGIT FOUR;Nd;0;EN;;4;4;4;N;EASTERN ARABIC-INDIC DIGIT FOUR;;;;
0x06F5, // 06F5;EXTENDED ARABIC-INDIC DIGIT FIVE;Nd;0;EN;;5;5;5;N;EASTERN ARABIC-INDIC DIGIT FIVE;;;;
0x06F6, // 06F6;EXTENDED ARABIC-INDIC DIGIT SIX;Nd;0;EN;;6;6;6;N;EASTERN ARABIC-INDIC DIGIT SIX;;;;
0x06F7, // 06F7;EXTENDED ARABIC-INDIC DIGIT SEVEN;Nd;0;EN;;7;7;7;N;EASTERN ARABIC-INDIC DIGIT SEVEN;;;;
0x06F8, // 06F8;EXTENDED ARABIC-INDIC DIGIT EIGHT;Nd;0;EN;;8;8;8;N;EASTERN ARABIC-INDIC DIGIT EIGHT;;;;
0x06F9, // 06F9;EXTENDED ARABIC-INDIC DIGIT NINE;Nd;0;EN;;9;9;9;N;EASTERN ARABIC-INDIC DIGIT NINE;;;;
0x07C0, // 07C0;NKO DIGIT ZERO;Nd;0;R;;0;0;0;N;;;;;
0x07C1, // 07C1;NKO DIGIT ONE;Nd;0;R;;1;1;1;N;;;;;
0x07C2, // 07C2;NKO DIGIT TWO;Nd;0;R;;2;2;2;N;;;;;
0x07C3, // 07C3;NKO DIGIT THREE;Nd;0;R;;3;3;3;N;;;;;
0x07C4, // 07C4;NKO DIGIT FOUR;Nd;0;R;;4;4;4;N;;;;;
0x07C5, // 07C5;NKO DIGIT FIVE;Nd;0;R;;5;5;5;N;;;;;
0x07C6, // 07C6;NKO DIGIT SIX;Nd;0;R;;6;6;6;N;;;;;
0x07C7, // 07C7;NKO DIGIT SEVEN;Nd;0;R;;7;7;7;N;;;;;
0x07C8, // 07C8;NKO DIGIT EIGHT;Nd;0;R;;8;8;8;N;;;;;
0x07C9, // 07C9;NKO DIGIT NINE;Nd;0;R;;9;9;9;N;;;;;
0x0966, // 0966;DEVANAGARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0x0967, // 0967;DEVANAGARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0x0968, // 0968;DEVANAGARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0x0969, // 0969;DEVANAGARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0x096A, // 096A;DEVANAGARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0x096B, // 096B;DEVANAGARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0x096C, // 096C;DEVANAGARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0x096D, // 096D;DEVANAGARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0x096E, // 096E;DEVANAGARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0x096F, // 096F;DEVANAGARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0x09E6, // 09E6;BENGALI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0x09E7, // 09E7;BENGALI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0x09E8, // 09E8;BENGALI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0x09E9, // 09E9;BENGALI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0x09EA, // 09EA;BENGALI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0x09EB, // 09EB;BENGALI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0x09EC, // 09EC;BENGALI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0x09ED, // 09ED;BENGALI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0x09EE, // 09EE;BENGALI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0x09EF, // 09EF;BENGALI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0x0A66, // 0A66;GURMUKHI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0x0A67, // 0A67;GURMUKHI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0x0A68, // 0A68;GURMUKHI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0x0A69, // 0A69;GURMUKHI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0x0A6A, // 0A6A;GURMUKHI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0x0A6B, // 0A6B;GURMUKHI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0x0A6C, // 0A6C;GURMUKHI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0x0A6D, // 0A6D;GURMUKHI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0x0A6E, // 0A6E;GURMUKHI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0x0A6F, // 0A6F;GURMUKHI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0x0AE6, // 0AE6;GUJARATI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0x0AE7, // 0AE7;GUJARATI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0x0AE8, // 0AE8;GUJARATI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0x0AE9, // 0AE9;GUJARATI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0x0AEA, // 0AEA;GUJARATI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0x0AEB, // 0AEB;GUJARATI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0x0AEC, // 0AEC;GUJARATI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0x0AED, // 0AED;GUJARATI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0x0AEE, // 0AEE;GUJARATI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0x0AEF, // 0AEF;GUJARATI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0x0B66, // 0B66;ORIYA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0x0B67, // 0B67;ORIYA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0x0B68, // 0B68;ORIYA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0x0B69, // 0B69;ORIYA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0x0B6A, // 0B6A;ORIYA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0x0B6B, // 0B6B;ORIYA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0x0B6C, // 0B6C;ORIYA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0x0B6D, // 0B6D;ORIYA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0x0B6E, // 0B6E;ORIYA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0x0B6F, // 0B6F;ORIYA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0x0BE6, // 0BE6;TAMIL DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0x0BE7, // 0BE7;TAMIL DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0x0BE8, // 0BE8;TAMIL DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0x0BE9, // 0BE9;TAMIL DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0x0BEA, // 0BEA;TAMIL DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0x0BEB, // 0BEB;TAMIL DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0x0BEC, // 0BEC;TAMIL DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0x0BED, // 0BED;TAMIL DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0x0BEE, // 0BEE;TAMIL DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0x0BEF, // 0BEF;TAMIL DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0x0C66, // 0C66;TELUGU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0x0C67, // 0C67;TELUGU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0x0C68, // 0C68;TELUGU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0x0C69, // 0C69;TELUGU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0x0C6A, // 0C6A;TELUGU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0x0C6B, // 0C6B;TELUGU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0x0C6C, // 0C6C;TELUGU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0x0C6D, // 0C6D;TELUGU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0x0C6E, // 0C6E;TELUGU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0x0C6F, // 0C6F;TELUGU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0x0CE6, // 0CE6;KANNADA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0x0CE7, // 0CE7;KANNADA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0x0CE8, // 0CE8;KANNADA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0x0CE9, // 0CE9;KANNADA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0x0CEA, // 0CEA;KANNADA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0x0CEB, // 0CEB;KANNADA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0x0CEC, // 0CEC;KANNADA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0x0CED, // 0CED;KANNADA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0x0CEE, // 0CEE;KANNADA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0x0CEF, // 0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0x0D66, // 0D66;MALAYALAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0x0D67, // 0D67;MALAYALAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0x0D68, // 0D68;MALAYALAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0x0D69, // 0D69;MALAYALAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0x0D6A, // 0D6A;MALAYALAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0x0D6B, // 0D6B;MALAYALAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0x0D6C, // 0D6C;MALAYALAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0x0D6D, // 0D6D;MALAYALAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0x0D6E, // 0D6E;MALAYALAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0x0D6F, // 0D6F;MALAYALAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0x0E50, // 0E50;THAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0x0E51, // 0E51;THAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0x0E52, // 0E52;THAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0x0E53, // 0E53;THAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0x0E54, // 0E54;THAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0x0E55, // 0E55;THAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0x0E56, // 0E56;THAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0x0E57, // 0E57;THAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0x0E58, // 0E58;THAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0x0E59, // 0E59;THAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0x0ED0, // 0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0x0ED1, // 0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0x0ED2, // 0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0x0ED3, // 0ED3;LAO DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0x0ED4, // 0ED4;LAO DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0x0ED5, // 0ED5;LAO DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0x0ED6, // 0ED6;LAO DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0x0ED7, // 0ED7;LAO DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0x0ED8, // 0ED8;LAO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0x0ED9, // 0ED9;LAO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0x0F20, // 0F20;TIBETAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0x0F21, // 0F21;TIBETAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0x0F22, // 0F22;TIBETAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0x0F23, // 0F23;TIBETAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0x0F24, // 0F24;TIBETAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0x0F25, // 0F25;TIBETAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0x0F26, // 0F26;TIBETAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0x0F27, // 0F27;TIBETAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0x0F28, // 0F28;TIBETAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0x0F29, // 0F29;TIBETAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0x1040, // 1040;MYANMAR DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0x1041, // 1041;MYANMAR DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0x1042, // 1042;MYANMAR DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0x1043, // 1043;MYANMAR DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0x1044, // 1044;MYANMAR DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0x1045, // 1045;MYANMAR DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0x1046, // 1046;MYANMAR DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0x1047, // 1047;MYANMAR DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0x1048, // 1048;MYANMAR DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0x1049, // 1049;MYANMAR DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0x1090, // 1090;MYANMAR SHAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0x1091, // 1091;MYANMAR SHAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0x1092, // 1092;MYANMAR SHAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0x1093, // 1093;MYANMAR SHAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0x1094, // 1094;MYANMAR SHAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0x1095, // 1095;MYANMAR SHAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0x1096, // 1096;MYANMAR SHAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0x1097, // 1097;MYANMAR SHAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0x1098, // 1098;MYANMAR SHAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0x1099, // 1099;MYANMAR SHAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0x17E0, // 17E0;KHMER DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0x17E1, // 17E1;KHMER DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0x17E2, // 17E2;KHMER DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0x17E3, // 17E3;KHMER DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0x17E4, // 17E4;KHMER DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0x17E5, // 17E5;KHMER DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0x17E6, // 17E6;KHMER DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0x17E7, // 17E7;KHMER DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0x17E8, // 17E8;KHMER DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0x17E9, // 17E9;KHMER DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0x1810, // 1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0x1811, // 1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0x1812, // 1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0x1813, // 1813;MONGOLIAN DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0x1814, // 1814;MONGOLIAN DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0x1815, // 1815;MONGOLIAN DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0x1816, // 1816;MONGOLIAN DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0x1817, // 1817;MONGOLIAN DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0x1818, // 1818;MONGOLIAN DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0x1819, // 1819;MONGOLIAN DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0x1946, // 1946;LIMBU DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0x1947, // 1947;LIMBU DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0x1948, // 1948;LIMBU DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0x1949, // 1949;LIMBU DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0x194A, // 194A;LIMBU DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0x194B, // 194B;LIMBU DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0x194C, // 194C;LIMBU DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0x194D, // 194D;LIMBU DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0x194E, // 194E;LIMBU DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0x194F, // 194F;LIMBU DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0x19D0, // 19D0;NEW TAI LUE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0x19D1, // 19D1;NEW TAI LUE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0x19D2, // 19D2;NEW TAI LUE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0x19D3, // 19D3;NEW TAI LUE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0x19D4, // 19D4;NEW TAI LUE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0x19D5, // 19D5;NEW TAI LUE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0x19D6, // 19D6;NEW TAI LUE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0x19D7, // 19D7;NEW TAI LUE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0x19D8, // 19D8;NEW TAI LUE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0x19D9, // 19D9;NEW TAI LUE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0x1B50, // 1B50;BALINESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0x1B51, // 1B51;BALINESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0x1B52, // 1B52;BALINESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0x1B53, // 1B53;BALINESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0x1B54, // 1B54;BALINESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0x1B55, // 1B55;BALINESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0x1B56, // 1B56;BALINESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0x1B57, // 1B57;BALINESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0x1B58, // 1B58;BALINESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0x1B59, // 1B59;BALINESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0x1BB0, // 1BB0;SUNDANESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0x1BB1, // 1BB1;SUNDANESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0x1BB2, // 1BB2;SUNDANESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0x1BB3, // 1BB3;SUNDANESE DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0x1BB4, // 1BB4;SUNDANESE DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0x1BB5, // 1BB5;SUNDANESE DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0x1BB6, // 1BB6;SUNDANESE DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0x1BB7, // 1BB7;SUNDANESE DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0x1BB8, // 1BB8;SUNDANESE DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0x1BB9, // 1BB9;SUNDANESE DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0x1C40, // 1C40;LEPCHA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0x1C41, // 1C41;LEPCHA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0x1C42, // 1C42;LEPCHA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0x1C43, // 1C43;LEPCHA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0x1C44, // 1C44;LEPCHA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0x1C45, // 1C45;LEPCHA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0x1C46, // 1C46;LEPCHA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0x1C47, // 1C47;LEPCHA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0x1C48, // 1C48;LEPCHA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0x1C49, // 1C49;LEPCHA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0x1C50, // 1C50;OL CHIKI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0x1C51, // 1C51;OL CHIKI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0x1C52, // 1C52;OL CHIKI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0x1C53, // 1C53;OL CHIKI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0x1C54, // 1C54;OL CHIKI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0x1C55, // 1C55;OL CHIKI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0x1C56, // 1C56;OL CHIKI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0x1C57, // 1C57;OL CHIKI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0x1C58, // 1C58;OL CHIKI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0x1C59, // 1C59;OL CHIKI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0xA620, // A620;VAI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0xA621, // A621;VAI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0xA622, // A622;VAI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0xA623, // A623;VAI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0xA624, // A624;VAI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0xA625, // A625;VAI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0xA626, // A626;VAI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0xA627, // A627;VAI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0xA628, // A628;VAI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0xA629, // A629;VAI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0xA8D0, // A8D0;SAURASHTRA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0xA8D1, // A8D1;SAURASHTRA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0xA8D2, // A8D2;SAURASHTRA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0xA8D3, // A8D3;SAURASHTRA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0xA8D4, // A8D4;SAURASHTRA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0xA8D5, // A8D5;SAURASHTRA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0xA8D6, // A8D6;SAURASHTRA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0xA8D7, // A8D7;SAURASHTRA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0xA8D8, // A8D8;SAURASHTRA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0xA8D9, // A8D9;SAURASHTRA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0xA900, // A900;KAYAH LI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0xA901, // A901;KAYAH LI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0xA902, // A902;KAYAH LI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0xA903, // A903;KAYAH LI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0xA904, // A904;KAYAH LI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0xA905, // A905;KAYAH LI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0xA906, // A906;KAYAH LI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0xA907, // A907;KAYAH LI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0xA908, // A908;KAYAH LI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0xA909, // A909;KAYAH LI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0xAA50, // AA50;CHAM DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
0xAA51, // AA51;CHAM DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
0xAA52, // AA52;CHAM DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
0xAA53, // AA53;CHAM DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
0xAA54, // AA54;CHAM DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
0xAA55, // AA55;CHAM DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
0xAA56, // AA56;CHAM DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
0xAA57, // AA57;CHAM DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
0xAA58, // AA58;CHAM DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
0xAA59, // AA59;CHAM DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
0xFF10, // FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;<wide> 0030;0;0;0;N;;;;;
0xFF11, // FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;<wide> 0031;1;1;1;N;;;;;
0xFF12, // FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;<wide> 0032;2;2;2;N;;;;;
0xFF13, // FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;<wide> 0033;3;3;3;N;;;;;
0xFF14, // FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;<wide> 0034;4;4;4;N;;;;;
0xFF15, // FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;<wide> 0035;5;5;5;N;;;;;
0xFF16, // FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;<wide> 0036;6;6;6;N;;;;;
0xFF17, // FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;<wide> 0037;7;7;7;N;;;;;
0xFF18, // FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;<wide> 0038;8;8;8;N;;;;;
0xFF19, // FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;<wide> 0039;9;9;9;N;;;;;
var testDigit = []int {
0x0030,
0x0039,
0x0661,
0x06F1,
0x07C9,
0x0966,
0x09EF,
0x0A66,
0x0AEF,
0x0B66,
0x0B6F,
0x0BE6,
0x0BEF,
0x0C66,
0x0CEF,
0x0D66,
0x0D6F,
0x0E50,
0x0E59,
0x0ED0,
0x0ED9,
0x0F20,
0x0F29,
0x1040,
0x1049,
0x1090,
0x1091,
0x1099,
0x17E0,
0x17E9,
0x1810,
0x1819,
0x1946,
0x194F,
0x19D0,
0x19D9,
0x1B50,
0x1B59,
0x1BB0,
0x1BB9,
0x1C40,
0x1C49,
0x1C50,
0x1C59,
0xA620,
0xA629,
0xA8D0,
0xA8D9,
0xA900,
0xA909,
0xAA50,
0xAA59,
0xFF10,
0xFF19,
0x104A1,
0x1D7CE,
}
var testLetter = []int{
0x41,
0x61,
0xaa,
0xba,
0xc8,
0xdb,
0xf9,
0x2ec,
0x535,
0x6e6,
0x93d,
0xa15,
0xb99,
0xdc0,
0xedd,
var testLetter = []int {
0x0041,
0x0061,
0x00AA,
0x00BA,
0x00C8,
0x00DB,
0x00F9,
0x02EC,
0x0535,
0x06E6,
0x093D,
0x0A15,
0x0B99,
0x0DC0,
0x0EDD,
0x1000,
0x1200,
0x1312,
0x1401,
0x1885,
0x2c00,
0xa800,
0xf900,
0xfa30,
0xffda,
0xffdc,
0x2C00,
0xA800,
0xF900,
0xFA30,
0xFFDA,
0xFFDC,
0x10000,
0x10300,
0x10400,
0x20000,
0x2f800,
0x2fa1d,
0x2F800,
0x2FA1D,
}
func TestDigit(t *testing.T) {
......
// Generated by running
// maketables --digits=true --url=http://www.unicode.org/Public/5.1.0/ucd/UnicodeData.txt
// DO NOT EDIT
package unicode
// 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},
Range{0x07c0, 0x07c9, 1},
Range{0x0966, 0x096f, 1},
Range{0x09e6, 0x09ef, 1},
Range{0x0a66, 0x0a6f, 1},
Range{0x0ae6, 0x0aef, 1},
Range{0x0b66, 0x0b6f, 1},
Range{0x0be6, 0x0bef, 1},
Range{0x0c66, 0x0c6f, 1},
Range{0x0ce6, 0x0cef, 1},
Range{0x0d66, 0x0d6f, 1},
Range{0x0e50, 0x0e59, 1},
Range{0x0ed0, 0x0ed9, 1},
Range{0x0f20, 0x0f29, 1},
Range{0x1040, 0x1049, 1},
Range{0x1090, 0x1099, 1},
Range{0x17e0, 0x17e9, 1},
Range{0x1810, 0x1819, 1},
Range{0x1946, 0x194f, 1},
Range{0x19d0, 0x19d9, 1},
Range{0x1b50, 0x1b59, 1},
Range{0x1bb0, 0x1bb9, 1},
Range{0x1c40, 0x1c49, 1},
Range{0x1c50, 0x1c59, 1},
Range{0xa620, 0xa629, 1},
Range{0xa8d0, 0xa8d9, 1},
Range{0xa900, 0xa909, 1},
Range{0xaa50, 0xaa59, 1},
Range{0xff10, 0xff19, 1},
Range{0x104a0, 0x104a9, 1},
Range{0x1d7ce, 0x1d7ff, 1},
}
......@@ -16,13 +16,23 @@ import (
"os";
"strconv";
"strings";
"unicode";
)
var url = flag.String("url", "http://www.unicode.org/Public/5.1.0/ucd/UnicodeData.txt", "URL of Unicode database")
var digits = flag.Bool("digits", false, "whether to generate digit tables; default is letter tables");
var url = flag.String("url",
"http://www.unicode.org/Public/5.1.0/ucd/UnicodeData.txt",
"URL of Unicode database")
var tables = flag.String("tables",
"all",
"comma-separated list of which tables to generate; default is all; can be letter");
var test = flag.Bool("test",
false,
"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 category = map[string] bool{ "letter":true } // Nd Lu etc. letter is a special case
// Data has form:
// 0037;DIGIT SEVEN;Nd;0;EN;;7;7;7;N;;;;;
// 007A;LATIN SMALL LETTER Z;Ll;0;L;;;;;N;;;005A;;005A
......@@ -46,7 +56,7 @@ const (
FSimpleTitlecaseMapping;
NumField;
MaxChar = 0xF0000; // anything above this doesn't have useful properties
MaxChar = 0x10FFFF; // anything above this shouldn't exist
)
var fieldName = []string{
......@@ -72,7 +82,6 @@ type Char struct {
field []string; // debugging only; could be deleted if we take out char.dump()
codePoint uint32; // redundant (it's the index in the chars table) but useful
category string;
numValue int;
upperCase uint32;
lowerCase uint32;
titleCase uint32;
......@@ -85,7 +94,7 @@ var lastChar uint32 = 0;
func parse(line string) {
field := strings.Split(line, ";", -1);
if len(field) != NumField {
die.Logf("%.5s...: %d fields (expected %d)\n", line, len(field), NumField);
die.Logf("%5s: %d fields (expected %d)\n", line, len(field), NumField);
}
point, err := strconv.Btoui64(field[FCodePoint], 16);
if err != nil {
......@@ -96,7 +105,6 @@ func parse(line string) {
return // not interesting and we use 0 as unset
}
if point >= MaxChar {
fmt.Fprintf(os.Stderr, "ignoring char U+%04x\n", point);
return;
}
char := &chars[point];
......@@ -106,6 +114,7 @@ func parse(line string) {
}
char.codePoint = lastChar;
char.category = field[FGeneralCategory];
category[char.category] = true;
switch char.category {
case "Nd":
// Decimal digit
......@@ -113,7 +122,6 @@ func parse(line string) {
if err != nil {
die.Log("U+%04x: bad numeric field: %s", point, err);
}
char.numValue = v;
case "Lu":
char.letter(field[FCodePoint], field[FSimpleLowercaseMapping], field[FSimpleTitlecaseMapping]);
case "Ll":
......@@ -151,6 +159,37 @@ func (char *Char) letterValue(s string, cas string) uint32 {
return uint32(v)
}
func allCategories() []string {
a := make([]string, len(category));
i := 0;
for k := range category {
a[i] = k;
i++;
}
return a;
}
// Extract the version number from the URL
func version() string {
// Break on slashes and look for the first numeric field
fields := strings.Split(*url, "/", 0);
for _, f := range fields {
if len(f) > 0 && '0' <= f[0] && f[0] <= '9' {
return f
}
}
die.Log("unknown version");
return "Unknown";
}
func letterOp(code int) bool {
switch chars[code].category {
case "Lu", "Ll", "Lt", "Lm", "Lo":
return true
}
return false
}
func main() {
flag.Parse();
......@@ -158,6 +197,9 @@ func main() {
if err != nil {
die.Log(err);
}
if resp.StatusCode != 200 {
die.Log("bad GET status", resp.StatusCode);
}
input := bufio.NewReader(resp.Body);
for {
line, err := input.ReadLineString('\n', false);
......@@ -170,59 +212,85 @@ func main() {
parse(line);
}
resp.Body.Close();
// Find out which categories to dump
list := strings.Split(*tables, ",", 0);
if *tables == "all" {
list = allCategories();
}
if *test {
fullTest(list);
return
}
fmt.Printf(
"// Generated by running\n"
"// maketables --digits=%t --url=%s\n"
"// maketables --tables=%t --url=%s\n"
"// DO NOT EDIT\n\n"
"package unicode\n",
*digits,
"package unicode\n\n",
*tables,
*url
);
// We generate an UpperCase name to serve as concise documentation and a lowerCase
fmt.Println("// Version is the Unicode edition from which the tables are derived.");
fmt.Printf("var Version = %q\n\n", version());
if *tables == "all" {
fmt.Println("// Tables is the set of Unicode data tables.");
fmt.Println("var Tables = map[string] []Range {");
for k, _ := range category {
fmt.Printf("\t%q: %s,\n", k, k);
}
fmt.Printf("}\n\n");
}
for _, name := range list {
if _, ok := category[name]; !ok {
die.Log("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
// available to clients.
if *digits {
dumpRange(
"\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"
);
} else {
if name == "letter" { // special case
dumpRange(
"\n// Letter is the set of Unicode letters.\n"
"var Letter = letter\n"
"var letter = []Range {\n",
func(code int) bool {
switch chars[code].category {
case "Lu", "Ll", "Lt", "Lm", "Lo":
return true
}
return false
},
letterOp,
"}\n"
);
dumpRange(
continue;
}
// Cases deserving special comments
switch name {
case "Nd":
fmt.Printf(
"\n// Digit is the set of Unicode characters with the \"decimal digit\" property.\n"
"var Digit = Nd\n\n"
)
case "Lu":
fmt.Printf(
"\n// Upper is the set of Unicode upper case letters.\n"
"var Upper = upper\n"
"var upper = []Range {\n",
func(code int) bool { return chars[code].category == "Lu" },
"}\n"
);
dumpRange(
"var Upper = Lu\n\n"
)
case "Ll":
fmt.Printf(
"\n// Lower is the set of Unicode lower case letters.\n"
"var Lower = lower\n"
"var lower = []Range {\n",
func(code int) bool { return chars[code].category == "Ll" },
"}\n"
);
dumpRange(
"var Lower = Ll\n\n"
)
case "Lt":
fmt.Printf(
"\n// Title is the set of Unicode title case letters.\n"
"var Title = title\n"
"var title = []Range {\n",
func(code int) bool { return chars[code].category == "Lt" },
"}\n"
"var Title = Lt\n\n"
)
}
dumpRange(
fmt.Sprintf(
"// %s is the set of Unicode characters in category %s\n"
"var %s = _%s\n"
"var _%s = []Range {\n",
name, name, name, name, name
),
func(code int) bool { return chars[code].category == name },
"}\n\n"
);
}
}
......@@ -279,3 +347,34 @@ func dumpRange(header string, inCategory Op, trailer string) {
}
fmt.Print(trailer);
}
func fullTest(list []string) {
for _, name := range list {
if _, ok := category[name]; !ok {
die.Log("unknown category", name);
}
r, ok := unicode.Tables[name];
if !ok {
die.Log("unknown table", name);
}
if name == "letter" {
verifyRange(name, letterOp, r);
} else {
verifyRange(
name,
func(code int) bool { return chars[code].category == name },
r
);
}
}
}
func verifyRange(name string, inCategory Op, table []unicode.Range) {
for i, c := range chars {
web := inCategory(i);
pkg := unicode.Is(table, i);
if web != pkg {
fmt.Fprintf(os.Stderr, "%s: U+%04X: web=%t pkg=%t\n", name, i, web, pkg);
}
}
}
// Generated by running
// tables --digits=false --url=http://www.unicode.org/Public/5.1.0/ucd/UnicodeData.txt
// maketables --tables=%t(string)% --url=http://www.unicode.org/Public/5.1.0/ucd/UnicodeData.txt
// DO NOT EDIT
package unicode
// Version is the Unicode edition from which the tables are derived.
var Version = "5.1.0"
// Tables is the set of Unicode data tables.
var Tables = map[string] []Range {
"Lm": Lm,
"Ll": Ll,
"Me": Me,
"Mc": Mc,
"Mn": Mn,
"Zl": Zl,
"letter": letter,
"Zp": Zp,
"Zs": Zs,
"Cs": Cs,
"Co": Co,
"Cf": Cf,
"Cc": Cc,
"Po": Po,
"Pi": Pi,
"Pf": Pf,
"Pe": Pe,
"Pd": Pd,
"Pc": Pc,
"Ps": Ps,
"Nd": Nd,
"Nl": Nl,
"No": No,
"So": So,
"Sm": Sm,
"Sk": Sk,
"Sc": Sc,
"Lu": Lu,
"Lt": Lt,
"Lo": Lo,
}
// Lm is the set of Unicode characters in category Lm
var Lm = _Lm
var _Lm = []Range {
Range{0x02b0, 0x02c1, 1},
Range{0x02c6, 0x02d1, 1},
Range{0x02e0, 0x02e4, 1},
Range{0x02ec, 0x02ee, 2},
Range{0x0374, 0x037a, 6},
Range{0x0559, 0x0640, 231},
Range{0x06e5, 0x06e6, 1},
Range{0x07f4, 0x07f5, 1},
Range{0x07fa, 0x0971, 375},
Range{0x0e46, 0x0ec6, 128},
Range{0x10fc, 0x17d7, 1755},
Range{0x1843, 0x1c78, 1077},
Range{0x1c79, 0x1c7d, 1},
Range{0x1d2c, 0x1d61, 1},
Range{0x1d78, 0x1d9b, 35},
Range{0x1d9c, 0x1dbf, 1},
Range{0x2090, 0x2094, 1},
Range{0x2c7d, 0x2d6f, 242},
Range{0x2e2f, 0x3005, 470},
Range{0x3031, 0x3035, 1},
Range{0x303b, 0x309d, 98},
Range{0x309e, 0x30fc, 94},
Range{0x30fd, 0x30fe, 1},
Range{0xa015, 0xa60c, 1527},
Range{0xa67f, 0xa717, 152},
Range{0xa718, 0xa71f, 1},
Range{0xa770, 0xa788, 24},
Range{0xff70, 0xff9e, 46},
Range{0xff9f, 0xff9f, 1},
}
// Lower is the set of Unicode lower case letters.
var Lower = Ll
// Ll is the set of Unicode characters in category Ll
var Ll = _Ll
var _Ll = []Range {
Range{0x0061, 0x007a, 1},
Range{0x00aa, 0x00b5, 11},
Range{0x00ba, 0x00df, 37},
Range{0x00e0, 0x00f6, 1},
Range{0x00f8, 0x00ff, 1},
Range{0x0101, 0x0137, 2},
Range{0x0138, 0x0148, 2},
Range{0x0149, 0x0177, 2},
Range{0x017a, 0x017e, 2},
Range{0x017f, 0x0180, 1},
Range{0x0183, 0x0185, 2},
Range{0x0188, 0x018c, 4},
Range{0x018d, 0x0192, 5},
Range{0x0195, 0x0199, 4},
Range{0x019a, 0x019b, 1},
Range{0x019e, 0x01a1, 3},
Range{0x01a3, 0x01a5, 2},
Range{0x01a8, 0x01aa, 2},
Range{0x01ab, 0x01ad, 2},
Range{0x01b0, 0x01b4, 4},
Range{0x01b6, 0x01b9, 3},
Range{0x01ba, 0x01bd, 3},
Range{0x01be, 0x01bf, 1},
Range{0x01c6, 0x01cc, 3},
Range{0x01ce, 0x01dc, 2},
Range{0x01dd, 0x01ef, 2},
Range{0x01f0, 0x01f3, 3},
Range{0x01f5, 0x01f9, 4},
Range{0x01fb, 0x0233, 2},
Range{0x0234, 0x0239, 1},
Range{0x023c, 0x023f, 3},
Range{0x0240, 0x0242, 2},
Range{0x0247, 0x024f, 2},
Range{0x0250, 0x0293, 1},
Range{0x0295, 0x02af, 1},
Range{0x0371, 0x0373, 2},
Range{0x0377, 0x037b, 4},
Range{0x037c, 0x037d, 1},
Range{0x0390, 0x03ac, 28},
Range{0x03ad, 0x03ce, 1},
Range{0x03d0, 0x03d1, 1},
Range{0x03d5, 0x03d7, 1},
Range{0x03d9, 0x03ef, 2},
Range{0x03f0, 0x03f3, 1},
Range{0x03f5, 0x03fb, 3},
Range{0x03fc, 0x0430, 52},
Range{0x0431, 0x045f, 1},
Range{0x0461, 0x0481, 2},
Range{0x048b, 0x04bf, 2},
Range{0x04c2, 0x04ce, 2},
Range{0x04cf, 0x0523, 2},
Range{0x0561, 0x0587, 1},
Range{0x1d00, 0x1d2b, 1},
Range{0x1d62, 0x1d77, 1},
Range{0x1d79, 0x1d9a, 1},
Range{0x1e01, 0x1e95, 2},
Range{0x1e96, 0x1e9d, 1},
Range{0x1e9f, 0x1eff, 2},
Range{0x1f00, 0x1f07, 1},
Range{0x1f10, 0x1f15, 1},
Range{0x1f20, 0x1f27, 1},
Range{0x1f30, 0x1f37, 1},
Range{0x1f40, 0x1f45, 1},
Range{0x1f50, 0x1f57, 1},
Range{0x1f60, 0x1f67, 1},
Range{0x1f70, 0x1f7d, 1},
Range{0x1f80, 0x1f87, 1},
Range{0x1f90, 0x1f97, 1},
Range{0x1fa0, 0x1fa7, 1},
Range{0x1fb0, 0x1fb4, 1},
Range{0x1fb6, 0x1fb7, 1},
Range{0x1fbe, 0x1fc2, 4},
Range{0x1fc3, 0x1fc4, 1},
Range{0x1fc6, 0x1fc7, 1},
Range{0x1fd0, 0x1fd3, 1},
Range{0x1fd6, 0x1fd7, 1},
Range{0x1fe0, 0x1fe7, 1},
Range{0x1ff2, 0x1ff4, 1},
Range{0x1ff6, 0x1ff7, 1},
Range{0x2071, 0x207f, 14},
Range{0x210a, 0x210e, 4},
Range{0x210f, 0x2113, 4},
Range{0x212f, 0x2139, 5},
Range{0x213c, 0x213d, 1},
Range{0x2146, 0x2149, 1},
Range{0x214e, 0x2184, 54},
Range{0x2c30, 0x2c5e, 1},
Range{0x2c61, 0x2c65, 4},
Range{0x2c66, 0x2c6c, 2},
Range{0x2c71, 0x2c73, 2},
Range{0x2c74, 0x2c76, 2},
Range{0x2c77, 0x2c7c, 1},
Range{0x2c81, 0x2ce3, 2},
Range{0x2ce4, 0x2d00, 28},
Range{0x2d01, 0x2d25, 1},
Range{0xa641, 0xa65f, 2},
Range{0xa663, 0xa66d, 2},
Range{0xa681, 0xa697, 2},
Range{0xa723, 0xa72f, 2},
Range{0xa730, 0xa731, 1},
Range{0xa733, 0xa771, 2},
Range{0xa772, 0xa778, 1},
Range{0xa77a, 0xa77c, 2},
Range{0xa77f, 0xa787, 2},
Range{0xa78c, 0xfb00, 21364},
Range{0xfb01, 0xfb06, 1},
Range{0xfb13, 0xfb17, 1},
Range{0xff41, 0xff5a, 1},
Range{0x10428, 0x1044f, 1},
Range{0x1d41a, 0x1d433, 1},
Range{0x1d44e, 0x1d454, 1},
Range{0x1d456, 0x1d467, 1},
Range{0x1d482, 0x1d49b, 1},
Range{0x1d4b6, 0x1d4b9, 1},
Range{0x1d4bb, 0x1d4bd, 2},
Range{0x1d4be, 0x1d4c3, 1},
Range{0x1d4c5, 0x1d4cf, 1},
Range{0x1d4ea, 0x1d503, 1},
Range{0x1d51e, 0x1d537, 1},
Range{0x1d552, 0x1d56b, 1},
Range{0x1d586, 0x1d59f, 1},
Range{0x1d5ba, 0x1d5d3, 1},
Range{0x1d5ee, 0x1d607, 1},
Range{0x1d622, 0x1d63b, 1},
Range{0x1d656, 0x1d66f, 1},
Range{0x1d68a, 0x1d6a5, 1},
Range{0x1d6c2, 0x1d6da, 1},
Range{0x1d6dc, 0x1d6e1, 1},
Range{0x1d6fc, 0x1d714, 1},
Range{0x1d716, 0x1d71b, 1},
Range{0x1d736, 0x1d74e, 1},
Range{0x1d750, 0x1d755, 1},
Range{0x1d770, 0x1d788, 1},
Range{0x1d78a, 0x1d78f, 1},
Range{0x1d7aa, 0x1d7c2, 1},
Range{0x1d7c4, 0x1d7c9, 1},
Range{0x1d7cb, 0x1d7cb, 1},
}
// Me is the set of Unicode characters in category Me
var Me = _Me
var _Me = []Range {
Range{0x0488, 0x0489, 1},
Range{0x06de, 0x20dd, 6655},
Range{0x20de, 0x20e0, 1},
Range{0x20e2, 0x20e4, 1},
Range{0xa670, 0xa672, 1},
}
// Mc is the set of Unicode characters in category Mc
var Mc = _Mc
var _Mc = []Range {
Range{0x0903, 0x093e, 59},
Range{0x093f, 0x0940, 1},
Range{0x0949, 0x094c, 1},
Range{0x0982, 0x0983, 1},
Range{0x09be, 0x09c0, 1},
Range{0x09c7, 0x09c8, 1},
Range{0x09cb, 0x09cc, 1},
Range{0x09d7, 0x0a03, 44},
Range{0x0a3e, 0x0a40, 1},
Range{0x0a83, 0x0abe, 59},
Range{0x0abf, 0x0ac0, 1},
Range{0x0ac9, 0x0acb, 2},
Range{0x0acc, 0x0b02, 54},
Range{0x0b03, 0x0b3e, 59},
Range{0x0b40, 0x0b47, 7},
Range{0x0b48, 0x0b4b, 3},
Range{0x0b4c, 0x0b57, 11},
Range{0x0bbe, 0x0bbf, 1},
Range{0x0bc1, 0x0bc2, 1},
Range{0x0bc6, 0x0bc8, 1},
Range{0x0bca, 0x0bcc, 1},
Range{0x0bd7, 0x0c01, 42},
Range{0x0c02, 0x0c03, 1},
Range{0x0c41, 0x0c44, 1},
Range{0x0c82, 0x0c83, 1},
Range{0x0cbe, 0x0cc0, 2},
Range{0x0cc1, 0x0cc4, 1},
Range{0x0cc7, 0x0cc8, 1},
Range{0x0cca, 0x0ccb, 1},
Range{0x0cd5, 0x0cd6, 1},
Range{0x0d02, 0x0d03, 1},
Range{0x0d3e, 0x0d40, 1},
Range{0x0d46, 0x0d48, 1},
Range{0x0d4a, 0x0d4c, 1},
Range{0x0d57, 0x0d82, 43},
Range{0x0d83, 0x0dcf, 76},
Range{0x0dd0, 0x0dd1, 1},
Range{0x0dd8, 0x0ddf, 1},
Range{0x0df2, 0x0df3, 1},
Range{0x0f3e, 0x0f3f, 1},
Range{0x0f7f, 0x102b, 172},
Range{0x102c, 0x1031, 5},
Range{0x1038, 0x103b, 3},
Range{0x103c, 0x1056, 26},
Range{0x1057, 0x1062, 11},
Range{0x1063, 0x1064, 1},
Range{0x1067, 0x106d, 1},
Range{0x1083, 0x1084, 1},
Range{0x1087, 0x108c, 1},
Range{0x108f, 0x17b6, 1831},
Range{0x17be, 0x17c5, 1},
Range{0x17c7, 0x17c8, 1},
Range{0x1923, 0x1926, 1},
Range{0x1929, 0x192b, 1},
Range{0x1930, 0x1931, 1},
Range{0x1933, 0x1938, 1},
Range{0x19b0, 0x19c0, 1},
Range{0x19c8, 0x19c9, 1},
Range{0x1a19, 0x1a1b, 1},
Range{0x1b04, 0x1b35, 49},
Range{0x1b3b, 0x1b3d, 2},
Range{0x1b3e, 0x1b41, 1},
Range{0x1b43, 0x1b44, 1},
Range{0x1b82, 0x1ba1, 31},
Range{0x1ba6, 0x1ba7, 1},
Range{0x1baa, 0x1c24, 122},
Range{0x1c25, 0x1c2b, 1},
Range{0x1c34, 0x1c35, 1},
Range{0xa823, 0xa824, 1},
Range{0xa827, 0xa880, 89},
Range{0xa881, 0xa8b4, 51},
Range{0xa8b5, 0xa8c3, 1},
Range{0xa952, 0xa953, 1},
Range{0xaa2f, 0xaa30, 1},
Range{0xaa33, 0xaa34, 1},
Range{0xaa4d, 0x1d165, 75544},
Range{0x1d166, 0x1d16d, 7},
Range{0x1d16e, 0x1d172, 1},
}
// Mn is the set of Unicode characters in category Mn
var Mn = _Mn
var _Mn = []Range {
Range{0x0300, 0x036f, 1},
Range{0x0483, 0x0487, 1},
Range{0x0591, 0x05bd, 1},
Range{0x05bf, 0x05c1, 2},
Range{0x05c2, 0x05c4, 2},
Range{0x05c5, 0x05c7, 2},
Range{0x0610, 0x061a, 1},
Range{0x064b, 0x065e, 1},
Range{0x0670, 0x06d6, 102},
Range{0x06d7, 0x06dc, 1},
Range{0x06df, 0x06e4, 1},
Range{0x06e7, 0x06e8, 1},
Range{0x06ea, 0x06ed, 1},
Range{0x0711, 0x0730, 31},
Range{0x0731, 0x074a, 1},
Range{0x07a6, 0x07b0, 1},
Range{0x07eb, 0x07f3, 1},
Range{0x0901, 0x0902, 1},
Range{0x093c, 0x0941, 5},
Range{0x0942, 0x0948, 1},
Range{0x094d, 0x0951, 4},
Range{0x0952, 0x0954, 1},
Range{0x0962, 0x0963, 1},
Range{0x0981, 0x09bc, 59},
Range{0x09c1, 0x09c4, 1},
Range{0x09cd, 0x09e2, 21},
Range{0x09e3, 0x0a01, 30},
Range{0x0a02, 0x0a3c, 58},
Range{0x0a41, 0x0a42, 1},
Range{0x0a47, 0x0a48, 1},
Range{0x0a4b, 0x0a4d, 1},
Range{0x0a51, 0x0a70, 31},
Range{0x0a71, 0x0a75, 4},
Range{0x0a81, 0x0a82, 1},
Range{0x0abc, 0x0ac1, 5},
Range{0x0ac2, 0x0ac5, 1},
Range{0x0ac7, 0x0ac8, 1},
Range{0x0acd, 0x0ae2, 21},
Range{0x0ae3, 0x0b01, 30},
Range{0x0b3c, 0x0b3f, 3},
Range{0x0b41, 0x0b44, 1},
Range{0x0b4d, 0x0b56, 9},
Range{0x0b62, 0x0b63, 1},
Range{0x0b82, 0x0bc0, 62},
Range{0x0bcd, 0x0c3e, 113},
Range{0x0c3f, 0x0c40, 1},
Range{0x0c46, 0x0c48, 1},
Range{0x0c4a, 0x0c4d, 1},
Range{0x0c55, 0x0c56, 1},
Range{0x0c62, 0x0c63, 1},
Range{0x0cbc, 0x0cbf, 3},
Range{0x0cc6, 0x0ccc, 6},
Range{0x0ccd, 0x0ce2, 21},
Range{0x0ce3, 0x0d41, 94},
Range{0x0d42, 0x0d44, 1},
Range{0x0d4d, 0x0d62, 21},
Range{0x0d63, 0x0dca, 103},
Range{0x0dd2, 0x0dd4, 1},
Range{0x0dd6, 0x0e31, 91},
Range{0x0e34, 0x0e3a, 1},
Range{0x0e47, 0x0e4e, 1},
Range{0x0eb1, 0x0eb4, 3},
Range{0x0eb5, 0x0eb9, 1},
Range{0x0ebb, 0x0ebc, 1},
Range{0x0ec8, 0x0ecd, 1},
Range{0x0f18, 0x0f19, 1},
Range{0x0f35, 0x0f39, 2},
Range{0x0f71, 0x0f7e, 1},
Range{0x0f80, 0x0f84, 1},
Range{0x0f86, 0x0f87, 1},
Range{0x0f90, 0x0f97, 1},
Range{0x0f99, 0x0fbc, 1},
Range{0x0fc6, 0x102d, 103},
Range{0x102e, 0x1030, 1},
Range{0x1032, 0x1037, 1},
Range{0x1039, 0x103a, 1},
Range{0x103d, 0x103e, 1},
Range{0x1058, 0x1059, 1},
Range{0x105e, 0x1060, 1},
Range{0x1071, 0x1074, 1},
Range{0x1082, 0x1085, 3},
Range{0x1086, 0x108d, 7},
Range{0x135f, 0x1712, 947},
Range{0x1713, 0x1714, 1},
Range{0x1732, 0x1734, 1},
Range{0x1752, 0x1753, 1},
Range{0x1772, 0x1773, 1},
Range{0x17b7, 0x17bd, 1},
Range{0x17c6, 0x17c9, 3},
Range{0x17ca, 0x17d3, 1},
Range{0x17dd, 0x180b, 46},
Range{0x180c, 0x180d, 1},
Range{0x18a9, 0x1920, 119},
Range{0x1921, 0x1922, 1},
Range{0x1927, 0x1928, 1},
Range{0x1932, 0x1939, 7},
Range{0x193a, 0x193b, 1},
Range{0x1a17, 0x1a18, 1},
Range{0x1b00, 0x1b03, 1},
Range{0x1b34, 0x1b36, 2},
Range{0x1b37, 0x1b3a, 1},
Range{0x1b3c, 0x1b42, 6},
Range{0x1b6b, 0x1b73, 1},
Range{0x1b80, 0x1b81, 1},
Range{0x1ba2, 0x1ba5, 1},
Range{0x1ba8, 0x1ba9, 1},
Range{0x1c2c, 0x1c33, 1},
Range{0x1c36, 0x1c37, 1},
Range{0x1dc0, 0x1de6, 1},
Range{0x1dfe, 0x1dff, 1},
Range{0x20d0, 0x20dc, 1},
Range{0x20e1, 0x20e5, 4},
Range{0x20e6, 0x20f0, 1},
Range{0x2de0, 0x2dff, 1},
Range{0x302a, 0x302f, 1},
Range{0x3099, 0x309a, 1},
Range{0xa66f, 0xa67c, 13},
Range{0xa67d, 0xa802, 389},
Range{0xa806, 0xa80b, 5},
Range{0xa825, 0xa826, 1},
Range{0xa8c4, 0xa926, 98},
Range{0xa927, 0xa92d, 1},
Range{0xa947, 0xa951, 1},
Range{0xaa29, 0xaa2e, 1},
Range{0xaa31, 0xaa32, 1},
Range{0xaa35, 0xaa36, 1},
Range{0xaa43, 0xaa4c, 9},
Range{0xfb1e, 0xfe00, 738},
Range{0xfe01, 0xfe0f, 1},
Range{0xfe20, 0xfe26, 1},
Range{0x101fd, 0x10a01, 2052},
Range{0x10a02, 0x10a03, 1},
Range{0x10a05, 0x10a06, 1},
Range{0x10a0c, 0x10a0f, 1},
Range{0x10a38, 0x10a3a, 1},
Range{0x10a3f, 0x1d167, 50984},
Range{0x1d168, 0x1d169, 1},
Range{0x1d17b, 0x1d182, 1},
Range{0x1d185, 0x1d18b, 1},
Range{0x1d1aa, 0x1d1ad, 1},
Range{0x1d242, 0x1d244, 1},
Range{0xe0100, 0xe01ef, 1},
}
// Zl is the set of Unicode characters in category Zl
var Zl = _Zl
var _Zl = []Range {
Range{0x2028, 0x2028, 1},
}
// Letter is the set of Unicode letters.
var Letter = letter
var letter = []Range {
......@@ -379,10 +843,582 @@ var letter = []Range {
Range{0x20000, 0x2a6d6, 42710},
Range{0x2f800, 0x2fa1d, 1},
}
// Zp is the set of Unicode characters in category Zp
var Zp = _Zp
var _Zp = []Range {
Range{0x2029, 0x2029, 1},
}
// Zs is the set of Unicode characters in category Zs
var Zs = _Zs
var _Zs = []Range {
Range{0x0020, 0x00a0, 128},
Range{0x1680, 0x180e, 398},
Range{0x2000, 0x200a, 1},
Range{0x202f, 0x205f, 48},
Range{0x3000, 0x3000, 1},
}
// Cs is the set of Unicode characters in category Cs
var Cs = _Cs
var _Cs = []Range {
Range{0xd800, 0xdb7f, 895},
Range{0xdb80, 0xdbff, 127},
Range{0xdc00, 0xdfff, 1023},
}
// Co is the set of Unicode characters in category Co
var Co = _Co
var _Co = []Range {
Range{0xe000, 0xf8ff, 6399},
Range{0xf0000, 0xffffd, 65533},
Range{0x100000, 0x10fffd, 65533},
}
// Cf is the set of Unicode characters in category Cf
var Cf = _Cf
var _Cf = []Range {
Range{0x00ad, 0x0600, 1363},
Range{0x0601, 0x0603, 1},
Range{0x06dd, 0x070f, 50},
Range{0x17b4, 0x17b5, 1},
Range{0x200b, 0x200f, 1},
Range{0x202a, 0x202e, 1},
Range{0x2060, 0x2064, 1},
Range{0x206a, 0x206f, 1},
Range{0xfeff, 0xfff9, 250},
Range{0xfffa, 0xfffb, 1},
Range{0x1d173, 0x1d17a, 1},
Range{0xe0001, 0xe0020, 31},
Range{0xe0021, 0xe007f, 1},
}
// Cc is the set of Unicode characters in category Cc
var Cc = _Cc
var _Cc = []Range {
Range{0x0001, 0x001f, 1},
Range{0x007f, 0x009f, 1},
}
// Po is the set of Unicode characters in category Po
var Po = _Po
var _Po = []Range {
Range{0x0021, 0x0023, 1},
Range{0x0025, 0x0027, 1},
Range{0x002a, 0x002e, 2},
Range{0x002f, 0x003a, 11},
Range{0x003b, 0x003f, 4},
Range{0x0040, 0x005c, 28},
Range{0x00a1, 0x00b7, 22},
Range{0x00bf, 0x037e, 703},
Range{0x0387, 0x055a, 467},
Range{0x055b, 0x055f, 1},
Range{0x0589, 0x05c0, 55},
Range{0x05c3, 0x05c6, 3},
Range{0x05f3, 0x05f4, 1},
Range{0x0609, 0x060a, 1},
Range{0x060c, 0x060d, 1},
Range{0x061b, 0x061e, 3},
Range{0x061f, 0x066a, 75},
Range{0x066b, 0x066d, 1},
Range{0x06d4, 0x0700, 44},
Range{0x0701, 0x070d, 1},
Range{0x07f7, 0x07f9, 1},
Range{0x0964, 0x0965, 1},
Range{0x0970, 0x0df4, 1156},
Range{0x0e4f, 0x0e5a, 11},
Range{0x0e5b, 0x0f04, 169},
Range{0x0f05, 0x0f12, 1},
Range{0x0f85, 0x0fd0, 75},
Range{0x0fd1, 0x0fd4, 1},
Range{0x104a, 0x104f, 1},
Range{0x10fb, 0x1361, 614},
Range{0x1362, 0x1368, 1},
Range{0x166d, 0x166e, 1},
Range{0x16eb, 0x16ed, 1},
Range{0x1735, 0x1736, 1},
Range{0x17d4, 0x17d6, 1},
Range{0x17d8, 0x17da, 1},
Range{0x1800, 0x1805, 1},
Range{0x1807, 0x180a, 1},
Range{0x1944, 0x1945, 1},
Range{0x19de, 0x19df, 1},
Range{0x1a1e, 0x1a1f, 1},
Range{0x1b5a, 0x1b60, 1},
Range{0x1c3b, 0x1c3f, 1},
Range{0x1c7e, 0x1c7f, 1},
Range{0x2016, 0x2017, 1},
Range{0x2020, 0x2027, 1},
Range{0x2030, 0x2038, 1},
Range{0x203b, 0x203e, 1},
Range{0x2041, 0x2043, 1},
Range{0x2047, 0x2051, 1},
Range{0x2053, 0x2055, 2},
Range{0x2056, 0x205e, 1},
Range{0x2cf9, 0x2cfc, 1},
Range{0x2cfe, 0x2cff, 1},
Range{0x2e00, 0x2e01, 1},
Range{0x2e06, 0x2e08, 1},
Range{0x2e0b, 0x2e0e, 3},
Range{0x2e0f, 0x2e16, 1},
Range{0x2e18, 0x2e19, 1},
Range{0x2e1b, 0x2e1e, 3},
Range{0x2e1f, 0x2e2a, 11},
Range{0x2e2b, 0x2e2e, 1},
Range{0x2e30, 0x3001, 465},
Range{0x3002, 0x3003, 1},
Range{0x303d, 0x30fb, 190},
Range{0xa60d, 0xa60f, 1},
Range{0xa673, 0xa67e, 11},
Range{0xa874, 0xa877, 1},
Range{0xa8ce, 0xa8cf, 1},
Range{0xa92e, 0xa92f, 1},
Range{0xa95f, 0xaa5c, 253},
Range{0xaa5d, 0xaa5f, 1},
Range{0xfe10, 0xfe16, 1},
Range{0xfe19, 0xfe30, 23},
Range{0xfe45, 0xfe46, 1},
Range{0xfe49, 0xfe4c, 1},
Range{0xfe50, 0xfe52, 1},
Range{0xfe54, 0xfe57, 1},
Range{0xfe5f, 0xfe61, 1},
Range{0xfe68, 0xfe6a, 2},
Range{0xfe6b, 0xff01, 150},
Range{0xff02, 0xff03, 1},
Range{0xff05, 0xff07, 1},
Range{0xff0a, 0xff0e, 2},
Range{0xff0f, 0xff1a, 11},
Range{0xff1b, 0xff1f, 4},
Range{0xff20, 0xff3c, 28},
Range{0xff61, 0xff64, 3},
Range{0xff65, 0x10100, 411},
Range{0x10101, 0x1039f, 670},
Range{0x103d0, 0x1091f, 1359},
Range{0x1093f, 0x10a50, 273},
Range{0x10a51, 0x10a58, 1},
Range{0x12470, 0x12473, 1},
}
// Pi is the set of Unicode characters in category Pi
var Pi = _Pi
var _Pi = []Range {
Range{0x00ab, 0x2018, 8045},
Range{0x201b, 0x201c, 1},
Range{0x201f, 0x2039, 26},
Range{0x2e02, 0x2e04, 2},
Range{0x2e09, 0x2e0c, 3},
Range{0x2e1c, 0x2e20, 4},
}
// Pf is the set of Unicode characters in category Pf
var Pf = _Pf
var _Pf = []Range {
Range{0x00bb, 0x2019, 8030},
Range{0x201d, 0x203a, 29},
Range{0x2e03, 0x2e05, 2},
Range{0x2e0a, 0x2e0d, 3},
Range{0x2e1d, 0x2e21, 4},
}
// Pe is the set of Unicode characters in category Pe
var Pe = _Pe
var _Pe = []Range {
Range{0x0029, 0x005d, 52},
Range{0x007d, 0x0f3b, 3774},
Range{0x0f3d, 0x169c, 1887},
Range{0x2046, 0x207e, 56},
Range{0x208e, 0x232a, 668},
Range{0x2769, 0x2775, 2},
Range{0x27c6, 0x27e7, 33},
Range{0x27e9, 0x27ef, 2},
Range{0x2984, 0x2998, 2},
Range{0x29d9, 0x29db, 2},
Range{0x29fd, 0x2e23, 1062},
Range{0x2e25, 0x2e29, 2},
Range{0x3009, 0x3011, 2},
Range{0x3015, 0x301b, 2},
Range{0x301e, 0x301f, 1},
Range{0xfd3f, 0xfe18, 217},
Range{0xfe36, 0xfe44, 2},
Range{0xfe48, 0xfe5a, 18},
Range{0xfe5c, 0xfe5e, 2},
Range{0xff09, 0xff3d, 52},
Range{0xff5d, 0xff63, 3},
}
// Pd is the set of Unicode characters in category Pd
var Pd = _Pd
var _Pd = []Range {
Range{0x002d, 0x058a, 1373},
Range{0x05be, 0x1806, 4680},
Range{0x2010, 0x2015, 1},
Range{0x2e17, 0x2e1a, 3},
Range{0x301c, 0x3030, 20},
Range{0x30a0, 0xfe31, 52625},
Range{0xfe32, 0xfe58, 38},
Range{0xfe63, 0xff0d, 170},
}
// Pc is the set of Unicode characters in category Pc
var Pc = _Pc
var _Pc = []Range {
Range{0x005f, 0x203f, 8160},
Range{0x2040, 0x2054, 20},
Range{0xfe33, 0xfe34, 1},
Range{0xfe4d, 0xfe4f, 1},
Range{0xff3f, 0xff3f, 1},
}
// Ps is the set of Unicode characters in category Ps
var Ps = _Ps
var _Ps = []Range {
Range{0x0028, 0x005b, 51},
Range{0x007b, 0x0f3a, 3775},
Range{0x0f3c, 0x169b, 1887},
Range{0x201a, 0x201e, 4},
Range{0x2045, 0x207d, 56},
Range{0x208d, 0x2329, 668},
Range{0x2768, 0x2774, 2},
Range{0x27c5, 0x27e6, 33},
Range{0x27e8, 0x27ee, 2},
Range{0x2983, 0x2997, 2},
Range{0x29d8, 0x29da, 2},
Range{0x29fc, 0x2e22, 1062},
Range{0x2e24, 0x2e28, 2},
Range{0x3008, 0x3010, 2},
Range{0x3014, 0x301a, 2},
Range{0x301d, 0xfd3e, 52513},
Range{0xfe17, 0xfe35, 30},
Range{0xfe37, 0xfe43, 2},
Range{0xfe47, 0xfe59, 18},
Range{0xfe5b, 0xfe5d, 2},
Range{0xff08, 0xff3b, 51},
Range{0xff5b, 0xff5f, 4},
Range{0xff62, 0xff62, 1},
}
// Digit is the set of Unicode characters with the "decimal digit" property.
var Digit = Nd
// Nd is the set of Unicode characters in category Nd
var Nd = _Nd
var _Nd = []Range {
Range{0x0030, 0x0039, 1},
Range{0x0660, 0x0669, 1},
Range{0x06f0, 0x06f9, 1},
Range{0x07c0, 0x07c9, 1},
Range{0x0966, 0x096f, 1},
Range{0x09e6, 0x09ef, 1},
Range{0x0a66, 0x0a6f, 1},
Range{0x0ae6, 0x0aef, 1},
Range{0x0b66, 0x0b6f, 1},
Range{0x0be6, 0x0bef, 1},
Range{0x0c66, 0x0c6f, 1},
Range{0x0ce6, 0x0cef, 1},
Range{0x0d66, 0x0d6f, 1},
Range{0x0e50, 0x0e59, 1},
Range{0x0ed0, 0x0ed9, 1},
Range{0x0f20, 0x0f29, 1},
Range{0x1040, 0x1049, 1},
Range{0x1090, 0x1099, 1},
Range{0x17e0, 0x17e9, 1},
Range{0x1810, 0x1819, 1},
Range{0x1946, 0x194f, 1},
Range{0x19d0, 0x19d9, 1},
Range{0x1b50, 0x1b59, 1},
Range{0x1bb0, 0x1bb9, 1},
Range{0x1c40, 0x1c49, 1},
Range{0x1c50, 0x1c59, 1},
Range{0xa620, 0xa629, 1},
Range{0xa8d0, 0xa8d9, 1},
Range{0xa900, 0xa909, 1},
Range{0xaa50, 0xaa59, 1},
Range{0xff10, 0xff19, 1},
Range{0x104a0, 0x104a9, 1},
Range{0x1d7ce, 0x1d7ff, 1},
}
// Nl is the set of Unicode characters in category Nl
var Nl = _Nl
var _Nl = []Range {
Range{0x16ee, 0x16f0, 1},
Range{0x2160, 0x2182, 1},
Range{0x2185, 0x2188, 1},
Range{0x3007, 0x3021, 26},
Range{0x3022, 0x3029, 1},
Range{0x3038, 0x303a, 1},
Range{0x10140, 0x10174, 1},
Range{0x10341, 0x1034a, 9},
Range{0x103d1, 0x103d5, 1},
Range{0x12400, 0x12462, 1},
}
// No is the set of Unicode characters in category No
var No = _No
var _No = []Range {
Range{0x00b2, 0x00b3, 1},
Range{0x00b9, 0x00bc, 3},
Range{0x00bd, 0x00be, 1},
Range{0x09f4, 0x09f9, 1},
Range{0x0bf0, 0x0bf2, 1},
Range{0x0c78, 0x0c7e, 1},
Range{0x0d70, 0x0d75, 1},
Range{0x0f2a, 0x0f33, 1},
Range{0x1369, 0x137c, 1},
Range{0x17f0, 0x17f9, 1},
Range{0x2070, 0x2074, 4},
Range{0x2075, 0x2079, 1},
Range{0x2080, 0x2089, 1},
Range{0x2153, 0x215f, 1},
Range{0x2460, 0x249b, 1},
Range{0x24ea, 0x24ff, 1},
Range{0x2776, 0x2793, 1},
Range{0x2cfd, 0x3192, 1173},
Range{0x3193, 0x3195, 1},
Range{0x3220, 0x3229, 1},
Range{0x3251, 0x325f, 1},
Range{0x3280, 0x3289, 1},
Range{0x32b1, 0x32bf, 1},
Range{0x10107, 0x10133, 1},
Range{0x10175, 0x10178, 1},
Range{0x1018a, 0x10320, 406},
Range{0x10321, 0x10323, 1},
Range{0x10916, 0x10919, 1},
Range{0x10a40, 0x10a47, 1},
Range{0x1d360, 0x1d371, 1},
}
// So is the set of Unicode characters in category So
var So = _So
var _So = []Range {
Range{0x00a6, 0x00a7, 1},
Range{0x00a9, 0x00ae, 5},
Range{0x00b0, 0x00b6, 6},
Range{0x0482, 0x060e, 396},
Range{0x060f, 0x06e9, 218},
Range{0x06fd, 0x06fe, 1},
Range{0x07f6, 0x09fa, 516},
Range{0x0b70, 0x0bf3, 131},
Range{0x0bf4, 0x0bf8, 1},
Range{0x0bfa, 0x0c7f, 133},
Range{0x0cf1, 0x0cf2, 1},
Range{0x0d79, 0x0f01, 392},
Range{0x0f02, 0x0f03, 1},
Range{0x0f13, 0x0f17, 1},
Range{0x0f1a, 0x0f1f, 1},
Range{0x0f34, 0x0f38, 2},
Range{0x0fbe, 0x0fc5, 1},
Range{0x0fc7, 0x0fcc, 1},
Range{0x0fce, 0x0fcf, 1},
Range{0x109e, 0x109f, 1},
Range{0x1360, 0x1390, 48},
Range{0x1391, 0x1399, 1},
Range{0x1940, 0x19e0, 160},
Range{0x19e1, 0x19ff, 1},
Range{0x1b61, 0x1b6a, 1},
Range{0x1b74, 0x1b7c, 1},
Range{0x2100, 0x2101, 1},
Range{0x2103, 0x2106, 1},
Range{0x2108, 0x2109, 1},
Range{0x2114, 0x2116, 2},
Range{0x2117, 0x2118, 1},
Range{0x211e, 0x2123, 1},
Range{0x2125, 0x2129, 2},
Range{0x212e, 0x213a, 12},
Range{0x213b, 0x214a, 15},
Range{0x214c, 0x214d, 1},
Range{0x214f, 0x2195, 70},
Range{0x2196, 0x2199, 1},
Range{0x219c, 0x219f, 1},
Range{0x21a1, 0x21a2, 1},
Range{0x21a4, 0x21a5, 1},
Range{0x21a7, 0x21ad, 1},
Range{0x21af, 0x21cd, 1},
Range{0x21d0, 0x21d1, 1},
Range{0x21d3, 0x21d5, 2},
Range{0x21d6, 0x21f3, 1},
Range{0x2300, 0x2307, 1},
Range{0x230c, 0x231f, 1},
Range{0x2322, 0x2328, 1},
Range{0x232b, 0x237b, 1},
Range{0x237d, 0x239a, 1},
Range{0x23b4, 0x23db, 1},
Range{0x23e2, 0x23e7, 1},
Range{0x2400, 0x2426, 1},
Range{0x2440, 0x244a, 1},
Range{0x249c, 0x24e9, 1},
Range{0x2500, 0x25b6, 1},
Range{0x25b8, 0x25c0, 1},
Range{0x25c2, 0x25f7, 1},
Range{0x2600, 0x266e, 1},
Range{0x2670, 0x269d, 1},
Range{0x26a0, 0x26bc, 1},
Range{0x26c0, 0x26c3, 1},
Range{0x2701, 0x2704, 1},
Range{0x2706, 0x2709, 1},
Range{0x270c, 0x2727, 1},
Range{0x2729, 0x274b, 1},
Range{0x274d, 0x274f, 2},
Range{0x2750, 0x2752, 1},
Range{0x2756, 0x2758, 2},
Range{0x2759, 0x275e, 1},
Range{0x2761, 0x2767, 1},
Range{0x2794, 0x2798, 4},
Range{0x2799, 0x27af, 1},
Range{0x27b1, 0x27be, 1},
Range{0x2800, 0x28ff, 1},
Range{0x2b00, 0x2b2f, 1},
Range{0x2b45, 0x2b46, 1},
Range{0x2b50, 0x2b54, 1},
Range{0x2ce5, 0x2cea, 1},
Range{0x2e80, 0x2e99, 1},
Range{0x2e9b, 0x2ef3, 1},
Range{0x2f00, 0x2fd5, 1},
Range{0x2ff0, 0x2ffb, 1},
Range{0x3004, 0x3012, 14},
Range{0x3013, 0x3020, 13},
Range{0x3036, 0x3037, 1},
Range{0x303e, 0x303f, 1},
Range{0x3190, 0x3191, 1},
Range{0x3196, 0x319f, 1},
Range{0x31c0, 0x31e3, 1},
Range{0x3200, 0x321e, 1},
Range{0x322a, 0x3243, 1},
Range{0x3250, 0x3260, 16},
Range{0x3261, 0x327f, 1},
Range{0x328a, 0x32b0, 1},
Range{0x32c0, 0x32fe, 1},
Range{0x3300, 0x33ff, 1},
Range{0x4dc0, 0x4dff, 1},
Range{0xa490, 0xa4c6, 1},
Range{0xa828, 0xa82b, 1},
Range{0xfdfd, 0xffe4, 487},
Range{0xffe8, 0xffed, 5},
Range{0xffee, 0xfffc, 14},
Range{0xfffd, 0x10102, 261},
Range{0x10137, 0x1013f, 1},
Range{0x10179, 0x10189, 1},
Range{0x10190, 0x1019b, 1},
Range{0x101d0, 0x101fc, 1},
Range{0x1d000, 0x1d0f5, 1},
Range{0x1d100, 0x1d126, 1},
Range{0x1d129, 0x1d164, 1},
Range{0x1d16a, 0x1d16c, 1},
Range{0x1d183, 0x1d184, 1},
Range{0x1d18c, 0x1d1a9, 1},
Range{0x1d1ae, 0x1d1dd, 1},
Range{0x1d200, 0x1d241, 1},
Range{0x1d245, 0x1d300, 187},
Range{0x1d301, 0x1d356, 1},
Range{0x1f000, 0x1f02b, 1},
Range{0x1f030, 0x1f093, 1},
}
// Sm is the set of Unicode characters in category Sm
var Sm = _Sm
var _Sm = []Range {
Range{0x002b, 0x003c, 17},
Range{0x003d, 0x003e, 1},
Range{0x007c, 0x007e, 2},
Range{0x00ac, 0x00b1, 5},
Range{0x00d7, 0x00f7, 32},
Range{0x03f6, 0x0606, 528},
Range{0x0607, 0x0608, 1},
Range{0x2044, 0x2052, 14},
Range{0x207a, 0x207c, 1},
Range{0x208a, 0x208c, 1},
Range{0x2140, 0x2144, 1},
Range{0x214b, 0x2190, 69},
Range{0x2191, 0x2194, 1},
Range{0x219a, 0x219b, 1},
Range{0x21a0, 0x21a6, 3},
Range{0x21ae, 0x21ce, 32},
Range{0x21cf, 0x21d2, 3},
Range{0x21d4, 0x21f4, 32},
Range{0x21f5, 0x22ff, 1},
Range{0x2308, 0x230b, 1},
Range{0x2320, 0x2321, 1},
Range{0x237c, 0x239b, 31},
Range{0x239c, 0x23b3, 1},
Range{0x23dc, 0x23e1, 1},
Range{0x25b7, 0x25c1, 10},
Range{0x25f8, 0x25ff, 1},
Range{0x266f, 0x27c0, 337},
Range{0x27c1, 0x27c4, 1},
Range{0x27c7, 0x27ca, 1},
Range{0x27cc, 0x27d0, 4},
Range{0x27d1, 0x27e5, 1},
Range{0x27f0, 0x27ff, 1},
Range{0x2900, 0x2982, 1},
Range{0x2999, 0x29d7, 1},
Range{0x29dc, 0x29fb, 1},
Range{0x29fe, 0x2aff, 1},
Range{0x2b30, 0x2b44, 1},
Range{0x2b47, 0x2b4c, 1},
Range{0xfb29, 0xfe62, 825},
Range{0xfe64, 0xfe66, 1},
Range{0xff0b, 0xff1c, 17},
Range{0xff1d, 0xff1e, 1},
Range{0xff5c, 0xff5e, 2},
Range{0xffe2, 0xffe9, 7},
Range{0xffea, 0xffec, 1},
Range{0x1d6c1, 0x1d6db, 26},
Range{0x1d6fb, 0x1d715, 26},
Range{0x1d735, 0x1d74f, 26},
Range{0x1d76f, 0x1d789, 26},
Range{0x1d7a9, 0x1d7c3, 26},
}
// Sk is the set of Unicode characters in category Sk
var Sk = _Sk
var _Sk = []Range {
Range{0x005e, 0x0060, 2},
Range{0x00a8, 0x00af, 7},
Range{0x00b4, 0x00b8, 4},
Range{0x02c2, 0x02c5, 1},
Range{0x02d2, 0x02df, 1},
Range{0x02e5, 0x02eb, 1},
Range{0x02ed, 0x02ef, 2},
Range{0x02f0, 0x02ff, 1},
Range{0x0375, 0x0384, 15},
Range{0x0385, 0x1fbd, 7224},
Range{0x1fbf, 0x1fc1, 1},
Range{0x1fcd, 0x1fcf, 1},
Range{0x1fdd, 0x1fdf, 1},
Range{0x1fed, 0x1fef, 1},
Range{0x1ffd, 0x1ffe, 1},
Range{0x309b, 0x309c, 1},
Range{0xa700, 0xa716, 1},
Range{0xa720, 0xa721, 1},
Range{0xa789, 0xa78a, 1},
Range{0xff3e, 0xff40, 2},
Range{0xffe3, 0xffe3, 1},
}
// Sc is the set of Unicode characters in category Sc
var Sc = _Sc
var _Sc = []Range {
Range{0x0024, 0x00a2, 126},
Range{0x00a3, 0x00a5, 1},
Range{0x060b, 0x09f2, 999},
Range{0x09f3, 0x0af1, 254},
Range{0x0bf9, 0x0e3f, 582},
Range{0x17db, 0x20a0, 2245},
Range{0x20a1, 0x20b5, 1},
Range{0xfdfc, 0xfe69, 109},
Range{0xff04, 0xffe0, 220},
Range{0xffe1, 0xffe5, 4},
Range{0xffe6, 0xffe6, 1},
}
// Upper is the set of Unicode upper case letters.
var Upper = upper
var upper = []Range {
var Upper = Lu
// Lu is the set of Unicode characters in category Lu
var Lu = _Lu
var _Lu = []Range {
Range{0x0041, 0x005a, 1},
Range{0x00c0, 0x00d6, 1},
Range{0x00d8, 0x00de, 1},
......@@ -509,151 +1545,13 @@ var upper = []Range {
Range{0x1d7ca, 0x1d7ca, 1},
}
// Lower is the set of Unicode lower case letters.
var Lower = lower
var lower = []Range {
Range{0x0061, 0x007a, 1},
Range{0x00aa, 0x00b5, 11},
Range{0x00ba, 0x00df, 37},
Range{0x00e0, 0x00f6, 1},
Range{0x00f8, 0x00ff, 1},
Range{0x0101, 0x0137, 2},
Range{0x0138, 0x0148, 2},
Range{0x0149, 0x0177, 2},
Range{0x017a, 0x017e, 2},
Range{0x017f, 0x0180, 1},
Range{0x0183, 0x0185, 2},
Range{0x0188, 0x018c, 4},
Range{0x018d, 0x0192, 5},
Range{0x0195, 0x0199, 4},
Range{0x019a, 0x019b, 1},
Range{0x019e, 0x01a1, 3},
Range{0x01a3, 0x01a5, 2},
Range{0x01a8, 0x01aa, 2},
Range{0x01ab, 0x01ad, 2},
Range{0x01b0, 0x01b4, 4},
Range{0x01b6, 0x01b9, 3},
Range{0x01ba, 0x01bd, 3},
Range{0x01be, 0x01bf, 1},
Range{0x01c6, 0x01cc, 3},
Range{0x01ce, 0x01dc, 2},
Range{0x01dd, 0x01ef, 2},
Range{0x01f0, 0x01f3, 3},
Range{0x01f5, 0x01f9, 4},
Range{0x01fb, 0x0233, 2},
Range{0x0234, 0x0239, 1},
Range{0x023c, 0x023f, 3},
Range{0x0240, 0x0242, 2},
Range{0x0247, 0x024f, 2},
Range{0x0250, 0x0293, 1},
Range{0x0295, 0x02af, 1},
Range{0x0371, 0x0373, 2},
Range{0x0377, 0x037b, 4},
Range{0x037c, 0x037d, 1},
Range{0x0390, 0x03ac, 28},
Range{0x03ad, 0x03ce, 1},
Range{0x03d0, 0x03d1, 1},
Range{0x03d5, 0x03d7, 1},
Range{0x03d9, 0x03ef, 2},
Range{0x03f0, 0x03f3, 1},
Range{0x03f5, 0x03fb, 3},
Range{0x03fc, 0x0430, 52},
Range{0x0431, 0x045f, 1},
Range{0x0461, 0x0481, 2},
Range{0x048b, 0x04bf, 2},
Range{0x04c2, 0x04ce, 2},
Range{0x04cf, 0x0523, 2},
Range{0x0561, 0x0587, 1},
Range{0x1d00, 0x1d2b, 1},
Range{0x1d62, 0x1d77, 1},
Range{0x1d79, 0x1d9a, 1},
Range{0x1e01, 0x1e95, 2},
Range{0x1e96, 0x1e9d, 1},
Range{0x1e9f, 0x1eff, 2},
Range{0x1f00, 0x1f07, 1},
Range{0x1f10, 0x1f15, 1},
Range{0x1f20, 0x1f27, 1},
Range{0x1f30, 0x1f37, 1},
Range{0x1f40, 0x1f45, 1},
Range{0x1f50, 0x1f57, 1},
Range{0x1f60, 0x1f67, 1},
Range{0x1f70, 0x1f7d, 1},
Range{0x1f80, 0x1f87, 1},
Range{0x1f90, 0x1f97, 1},
Range{0x1fa0, 0x1fa7, 1},
Range{0x1fb0, 0x1fb4, 1},
Range{0x1fb6, 0x1fb7, 1},
Range{0x1fbe, 0x1fc2, 4},
Range{0x1fc3, 0x1fc4, 1},
Range{0x1fc6, 0x1fc7, 1},
Range{0x1fd0, 0x1fd3, 1},
Range{0x1fd6, 0x1fd7, 1},
Range{0x1fe0, 0x1fe7, 1},
Range{0x1ff2, 0x1ff4, 1},
Range{0x1ff6, 0x1ff7, 1},
Range{0x2071, 0x207f, 14},
Range{0x210a, 0x210e, 4},
Range{0x210f, 0x2113, 4},
Range{0x212f, 0x2139, 5},
Range{0x213c, 0x213d, 1},
Range{0x2146, 0x2149, 1},
Range{0x214e, 0x2184, 54},
Range{0x2c30, 0x2c5e, 1},
Range{0x2c61, 0x2c65, 4},
Range{0x2c66, 0x2c6c, 2},
Range{0x2c71, 0x2c73, 2},
Range{0x2c74, 0x2c76, 2},
Range{0x2c77, 0x2c7c, 1},
Range{0x2c81, 0x2ce3, 2},
Range{0x2ce4, 0x2d00, 28},
Range{0x2d01, 0x2d25, 1},
Range{0xa641, 0xa65f, 2},
Range{0xa663, 0xa66d, 2},
Range{0xa681, 0xa697, 2},
Range{0xa723, 0xa72f, 2},
Range{0xa730, 0xa731, 1},
Range{0xa733, 0xa771, 2},
Range{0xa772, 0xa778, 1},
Range{0xa77a, 0xa77c, 2},
Range{0xa77f, 0xa787, 2},
Range{0xa78c, 0xfb00, 21364},
Range{0xfb01, 0xfb06, 1},
Range{0xfb13, 0xfb17, 1},
Range{0xff41, 0xff5a, 1},
Range{0x10428, 0x1044f, 1},
Range{0x1d41a, 0x1d433, 1},
Range{0x1d44e, 0x1d454, 1},
Range{0x1d456, 0x1d467, 1},
Range{0x1d482, 0x1d49b, 1},
Range{0x1d4b6, 0x1d4b9, 1},
Range{0x1d4bb, 0x1d4bd, 2},
Range{0x1d4be, 0x1d4c3, 1},
Range{0x1d4c5, 0x1d4cf, 1},
Range{0x1d4ea, 0x1d503, 1},
Range{0x1d51e, 0x1d537, 1},
Range{0x1d552, 0x1d56b, 1},
Range{0x1d586, 0x1d59f, 1},
Range{0x1d5ba, 0x1d5d3, 1},
Range{0x1d5ee, 0x1d607, 1},
Range{0x1d622, 0x1d63b, 1},
Range{0x1d656, 0x1d66f, 1},
Range{0x1d68a, 0x1d6a5, 1},
Range{0x1d6c2, 0x1d6da, 1},
Range{0x1d6dc, 0x1d6e1, 1},
Range{0x1d6fc, 0x1d714, 1},
Range{0x1d716, 0x1d71b, 1},
Range{0x1d736, 0x1d74e, 1},
Range{0x1d750, 0x1d755, 1},
Range{0x1d770, 0x1d788, 1},
Range{0x1d78a, 0x1d78f, 1},
Range{0x1d7aa, 0x1d7c2, 1},
Range{0x1d7c4, 0x1d7c9, 1},
Range{0x1d7cb, 0x1d7cb, 1},
}
// Title is the set of Unicode title case letters.
var Title = title
var title = []Range {
var Title = Lt
// Lt is the set of Unicode characters in category Lt
var Lt = _Lt
var _Lt = []Range {
Range{0x01c5, 0x01cb, 3},
Range{0x01f2, 0x1f88, 7574},
Range{0x1f89, 0x1f8f, 1},
......@@ -662,3 +1560,281 @@ var title = []Range {
Range{0x1fbc, 0x1fcc, 16},
Range{0x1ffc, 0x1ffc, 1},
}
// Lo is the set of Unicode characters in category Lo
var Lo = _Lo
var _Lo = []Range {
Range{0x01bb, 0x01c0, 5},
Range{0x01c1, 0x01c3, 1},
Range{0x0294, 0x05d0, 828},
Range{0x05d1, 0x05ea, 1},
Range{0x05f0, 0x05f2, 1},
Range{0x0621, 0x063f, 1},
Range{0x0641, 0x064a, 1},
Range{0x066e, 0x066f, 1},
Range{0x0671, 0x06d3, 1},
Range{0x06d5, 0x06ee, 25},
Range{0x06ef, 0x06fa, 11},
Range{0x06fb, 0x06fc, 1},
Range{0x06ff, 0x0710, 17},
Range{0x0712, 0x072f, 1},
Range{0x074d, 0x07a5, 1},
Range{0x07b1, 0x07ca, 25},
Range{0x07cb, 0x07ea, 1},
Range{0x0904, 0x0939, 1},
Range{0x093d, 0x0950, 19},
Range{0x0958, 0x0961, 1},
Range{0x0972, 0x097b, 9},
Range{0x097c, 0x097f, 1},
Range{0x0985, 0x098c, 1},
Range{0x098f, 0x0990, 1},
Range{0x0993, 0x09a8, 1},
Range{0x09aa, 0x09b0, 1},
Range{0x09b2, 0x09b6, 4},
Range{0x09b7, 0x09b9, 1},
Range{0x09bd, 0x09ce, 17},
Range{0x09dc, 0x09dd, 1},
Range{0x09df, 0x09e1, 1},
Range{0x09f0, 0x09f1, 1},
Range{0x0a05, 0x0a0a, 1},
Range{0x0a0f, 0x0a10, 1},
Range{0x0a13, 0x0a28, 1},
Range{0x0a2a, 0x0a30, 1},
Range{0x0a32, 0x0a33, 1},
Range{0x0a35, 0x0a36, 1},
Range{0x0a38, 0x0a39, 1},
Range{0x0a59, 0x0a5c, 1},
Range{0x0a5e, 0x0a72, 20},
Range{0x0a73, 0x0a74, 1},
Range{0x0a85, 0x0a8d, 1},
Range{0x0a8f, 0x0a91, 1},
Range{0x0a93, 0x0aa8, 1},
Range{0x0aaa, 0x0ab0, 1},
Range{0x0ab2, 0x0ab3, 1},
Range{0x0ab5, 0x0ab9, 1},
Range{0x0abd, 0x0ad0, 19},
Range{0x0ae0, 0x0ae1, 1},
Range{0x0b05, 0x0b0c, 1},
Range{0x0b0f, 0x0b10, 1},
Range{0x0b13, 0x0b28, 1},
Range{0x0b2a, 0x0b30, 1},
Range{0x0b32, 0x0b33, 1},
Range{0x0b35, 0x0b39, 1},
Range{0x0b3d, 0x0b5c, 31},
Range{0x0b5d, 0x0b5f, 2},
Range{0x0b60, 0x0b61, 1},
Range{0x0b71, 0x0b83, 18},
Range{0x0b85, 0x0b8a, 1},
Range{0x0b8e, 0x0b90, 1},
Range{0x0b92, 0x0b95, 1},
Range{0x0b99, 0x0b9a, 1},
Range{0x0b9c, 0x0b9e, 2},
Range{0x0b9f, 0x0ba3, 4},
Range{0x0ba4, 0x0ba8, 4},
Range{0x0ba9, 0x0baa, 1},
Range{0x0bae, 0x0bb9, 1},
Range{0x0bd0, 0x0c05, 53},
Range{0x0c06, 0x0c0c, 1},
Range{0x0c0e, 0x0c10, 1},
Range{0x0c12, 0x0c28, 1},
Range{0x0c2a, 0x0c33, 1},
Range{0x0c35, 0x0c39, 1},
Range{0x0c3d, 0x0c58, 27},
Range{0x0c59, 0x0c60, 7},
Range{0x0c61, 0x0c85, 36},
Range{0x0c86, 0x0c8c, 1},
Range{0x0c8e, 0x0c90, 1},
Range{0x0c92, 0x0ca8, 1},
Range{0x0caa, 0x0cb3, 1},
Range{0x0cb5, 0x0cb9, 1},
Range{0x0cbd, 0x0cde, 33},
Range{0x0ce0, 0x0ce1, 1},
Range{0x0d05, 0x0d0c, 1},
Range{0x0d0e, 0x0d10, 1},
Range{0x0d12, 0x0d28, 1},
Range{0x0d2a, 0x0d39, 1},
Range{0x0d3d, 0x0d60, 35},
Range{0x0d61, 0x0d7a, 25},
Range{0x0d7b, 0x0d7f, 1},
Range{0x0d85, 0x0d96, 1},
Range{0x0d9a, 0x0db1, 1},
Range{0x0db3, 0x0dbb, 1},
Range{0x0dbd, 0x0dc0, 3},
Range{0x0dc1, 0x0dc6, 1},
Range{0x0e01, 0x0e30, 1},
Range{0x0e32, 0x0e33, 1},
Range{0x0e40, 0x0e45, 1},
Range{0x0e81, 0x0e82, 1},
Range{0x0e84, 0x0e87, 3},
Range{0x0e88, 0x0e8a, 2},
Range{0x0e8d, 0x0e94, 7},
Range{0x0e95, 0x0e97, 1},
Range{0x0e99, 0x0e9f, 1},
Range{0x0ea1, 0x0ea3, 1},
Range{0x0ea5, 0x0ea7, 2},
Range{0x0eaa, 0x0eab, 1},
Range{0x0ead, 0x0eb0, 1},
Range{0x0eb2, 0x0eb3, 1},
Range{0x0ebd, 0x0ec0, 3},
Range{0x0ec1, 0x0ec4, 1},
Range{0x0edc, 0x0edd, 1},
Range{0x0f00, 0x0f40, 64},
Range{0x0f41, 0x0f47, 1},
Range{0x0f49, 0x0f6c, 1},
Range{0x0f88, 0x0f8b, 1},
Range{0x1000, 0x102a, 1},
Range{0x103f, 0x1050, 17},
Range{0x1051, 0x1055, 1},
Range{0x105a, 0x105d, 1},
Range{0x1061, 0x1065, 4},
Range{0x1066, 0x106e, 8},
Range{0x106f, 0x1070, 1},
Range{0x1075, 0x1081, 1},
Range{0x108e, 0x10d0, 66},
Range{0x10d1, 0x10fa, 1},
Range{0x1100, 0x1159, 1},
Range{0x115f, 0x11a2, 1},
Range{0x11a8, 0x11f9, 1},
Range{0x1200, 0x1248, 1},
Range{0x124a, 0x124d, 1},
Range{0x1250, 0x1256, 1},
Range{0x1258, 0x125a, 2},
Range{0x125b, 0x125d, 1},
Range{0x1260, 0x1288, 1},
Range{0x128a, 0x128d, 1},
Range{0x1290, 0x12b0, 1},
Range{0x12b2, 0x12b5, 1},
Range{0x12b8, 0x12be, 1},
Range{0x12c0, 0x12c2, 2},
Range{0x12c3, 0x12c5, 1},
Range{0x12c8, 0x12d6, 1},
Range{0x12d8, 0x1310, 1},
Range{0x1312, 0x1315, 1},
Range{0x1318, 0x135a, 1},
Range{0x1380, 0x138f, 1},
Range{0x13a0, 0x13f4, 1},
Range{0x1401, 0x166c, 1},
Range{0x166f, 0x1676, 1},
Range{0x1681, 0x169a, 1},
Range{0x16a0, 0x16ea, 1},
Range{0x1700, 0x170c, 1},
Range{0x170e, 0x1711, 1},
Range{0x1720, 0x1731, 1},
Range{0x1740, 0x1751, 1},
Range{0x1760, 0x176c, 1},
Range{0x176e, 0x1770, 1},
Range{0x1780, 0x17b3, 1},
Range{0x17dc, 0x1820, 68},
Range{0x1821, 0x1842, 1},
Range{0x1844, 0x1877, 1},
Range{0x1880, 0x18a8, 1},
Range{0x18aa, 0x1900, 86},
Range{0x1901, 0x191c, 1},
Range{0x1950, 0x196d, 1},
Range{0x1970, 0x1974, 1},
Range{0x1980, 0x19a9, 1},
Range{0x19c1, 0x19c7, 1},
Range{0x1a00, 0x1a16, 1},
Range{0x1b05, 0x1b33, 1},
Range{0x1b45, 0x1b4b, 1},
Range{0x1b83, 0x1ba0, 1},
Range{0x1bae, 0x1baf, 1},
Range{0x1c00, 0x1c23, 1},
Range{0x1c4d, 0x1c4f, 1},
Range{0x1c5a, 0x1c77, 1},
Range{0x2135, 0x2138, 1},
Range{0x2d30, 0x2d65, 1},
Range{0x2d80, 0x2d96, 1},
Range{0x2da0, 0x2da6, 1},
Range{0x2da8, 0x2dae, 1},
Range{0x2db0, 0x2db6, 1},
Range{0x2db8, 0x2dbe, 1},
Range{0x2dc0, 0x2dc6, 1},
Range{0x2dc8, 0x2dce, 1},
Range{0x2dd0, 0x2dd6, 1},
Range{0x2dd8, 0x2dde, 1},
Range{0x3006, 0x303c, 54},
Range{0x3041, 0x3096, 1},
Range{0x309f, 0x30a1, 2},
Range{0x30a2, 0x30fa, 1},
Range{0x30ff, 0x3105, 6},
Range{0x3106, 0x312d, 1},
Range{0x3131, 0x318e, 1},
Range{0x31a0, 0x31b7, 1},
Range{0x31f0, 0x31ff, 1},
Range{0x3400, 0x4db5, 6581},
Range{0x4e00, 0x9fc3, 20931},
Range{0xa000, 0xa014, 1},
Range{0xa016, 0xa48c, 1},
Range{0xa500, 0xa60b, 1},
Range{0xa610, 0xa61f, 1},
Range{0xa62a, 0xa62b, 1},
Range{0xa66e, 0xa7fb, 397},
Range{0xa7fc, 0xa801, 1},
Range{0xa803, 0xa805, 1},
Range{0xa807, 0xa80a, 1},
Range{0xa80c, 0xa822, 1},
Range{0xa840, 0xa873, 1},
Range{0xa882, 0xa8b3, 1},
Range{0xa90a, 0xa925, 1},
Range{0xa930, 0xa946, 1},
Range{0xaa00, 0xaa28, 1},
Range{0xaa40, 0xaa42, 1},
Range{0xaa44, 0xaa4b, 1},
Range{0xac00, 0xd7a3, 11171},
Range{0xf900, 0xfa2d, 1},
Range{0xfa30, 0xfa6a, 1},
Range{0xfa70, 0xfad9, 1},
Range{0xfb1d, 0xfb1f, 2},
Range{0xfb20, 0xfb28, 1},
Range{0xfb2a, 0xfb36, 1},
Range{0xfb38, 0xfb3c, 1},
Range{0xfb3e, 0xfb40, 2},
Range{0xfb41, 0xfb43, 2},
Range{0xfb44, 0xfb46, 2},
Range{0xfb47, 0xfbb1, 1},
Range{0xfbd3, 0xfd3d, 1},
Range{0xfd50, 0xfd8f, 1},
Range{0xfd92, 0xfdc7, 1},
Range{0xfdf0, 0xfdfb, 1},
Range{0xfe70, 0xfe74, 1},
Range{0xfe76, 0xfefc, 1},
Range{0xff66, 0xff6f, 1},
Range{0xff71, 0xff9d, 1},
Range{0xffa0, 0xffbe, 1},
Range{0xffc2, 0xffc7, 1},
Range{0xffca, 0xffcf, 1},
Range{0xffd2, 0xffd7, 1},
Range{0xffda, 0xffdc, 1},
Range{0x10000, 0x1000b, 1},
Range{0x1000d, 0x10026, 1},
Range{0x10028, 0x1003a, 1},
Range{0x1003c, 0x1003d, 1},
Range{0x1003f, 0x1004d, 1},
Range{0x10050, 0x1005d, 1},
Range{0x10080, 0x100fa, 1},
Range{0x10280, 0x1029c, 1},
Range{0x102a0, 0x102d0, 1},
Range{0x10300, 0x1031e, 1},
Range{0x10330, 0x10340, 1},
Range{0x10342, 0x10349, 1},
Range{0x10380, 0x1039d, 1},
Range{0x103a0, 0x103c3, 1},
Range{0x103c8, 0x103cf, 1},
Range{0x10450, 0x1049d, 1},
Range{0x10800, 0x10805, 1},
Range{0x10808, 0x1080a, 2},
Range{0x1080b, 0x10835, 1},
Range{0x10837, 0x10838, 1},
Range{0x1083c, 0x1083f, 3},
Range{0x10900, 0x10915, 1},
Range{0x10920, 0x10939, 1},
Range{0x10a00, 0x10a10, 16},
Range{0x10a11, 0x10a13, 1},
Range{0x10a15, 0x10a17, 1},
Range{0x10a19, 0x10a33, 1},
Range{0x12000, 0x1236e, 1},
Range{0x20000, 0x2a6d6, 42710},
Range{0x2f800, 0x2fa1d, 1},
}
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