comparison base/src/java/lang/Character.d @ 121:dc6fc593e8d7

Update for dmd-2.054 and small fixes in java.lang.Character
author Denis Shelomovskij <verylonglogin.reg@gmail.com>
date Tue, 12 Jul 2011 11:59:58 +0300
parents 536e43f63c81
children
comparison
equal deleted inserted replaced
120:536e43f63c81 121:dc6fc593e8d7
10 static import tango.text.UnicodeData; //for getUnicodeData 10 static import tango.text.UnicodeData; //for getUnicodeData
11 } else { // Phobos 11 } else { // Phobos
12 static import std.utf; 12 static import std.utf;
13 static import std.conv; 13 static import std.conv;
14 static import std.uni; 14 static import std.uni;
15 static import std.ctype;
16 static import std.string; 15 static import std.string;
17 } 16 }
18 17
19 class Character { 18 class Character {
20 public static const int MIN_RADIX = 2; 19 public static const int MIN_RADIX = 2;
67 return r[0]; 66 return r[0];
68 } else { // Phobos 67 } else { // Phobos
69 return std.uni.toUniLower( c ); 68 return std.uni.toUniLower( c );
70 } 69 }
71 } 70 }
71 ///Determines if the specified character is ISO-LATIN-1 white space.
72 public static bool isSpace( dchar c ){
73 return c == '\t' || c == '\n' || c == '\f' || c == '\r' || c == ' ';
74 }
75 ///Determines if the specified character is a Unicode space character.
76 public static bool isSpaceChar( dchar c ){
77 version(Tango){
78 return tango.text.Unicode.isWhitespace( c );
79 } else { // Phobos
80 return std.uni.isWhite(c);
81 }
82 }
83 alias isWhitespace isWhiteSpace;
84 ///Determines if the specified character is white space according to Java.
72 public static bool isWhitespace( dchar c ){ 85 public static bool isWhitespace( dchar c ){
73 version(Tango){ 86 // It is a Unicode space character (SPACE_SEPARATOR, LINE_SEPARATOR, or PARAGRAPH_SEPARATOR)
74 return tango.text.Unicode.isWhitespace( c ); 87 // but is not also a non-breaking space ('\u00A0', '\u2007', '\u202F').
75 } else { // Phobos 88 return isSpaceChar(c) && c != '\u00A0' && c != '\u2007' && c != '\u202F'
76 return std.string.iswhite(c); 89 || c == '\u0009' // It is '\u0009', HORIZONTAL TABULATION.
77 } 90 || c == '\u000A' // It is '\u000A', LINE FEED.
78 } 91 || c == '\u000B' // It is '\u000B', VERTICAL TABULATION.
79 alias isWhitespace isWhiteSpace; 92 || c == '\u000C' // It is '\u000C', FORM FEED.
80 public static bool isSpace( dchar c ){ 93 || c == '\u000D' // It is '\u000D', CARRIAGE RETURN.
81 version(Tango){ 94 || c == '\u001C' // It is '\u001C', FILE SEPARATOR.
82 return tango.text.Unicode.isSpace(c); 95 || c == '\u001D' // It is '\u001D', GROUP SEPARATOR.
83 } else { // Phobos 96 || c == '\u001E' // It is '\u001E', RECORD SEPARATOR.
84 return !!std.ctype.isspace(c); 97 || c == '\u001F'; // It is '\u001F', UNIT SEPARATOR.
85 }
86 } 98 }
87 public static bool isDigit( dchar c ){ 99 public static bool isDigit( dchar c ){
88 version(Tango){ 100 version(Tango){
89 return tango.text.Unicode.isDigit( c ); 101 return tango.text.Unicode.isDigit( c );
90 } else { // Phobos 102 } else { // Phobos
91 return !!std.ctype.isdigit(c); 103 const dchar[] unicodeNd = [
104 '\u0030', '\u0031', '\u0032', '\u0033', '\u0034', '\u0035', '\u0036', '\u0037', '\u0038', '\u0039', '\u0660', '\u0661', '\u0662',
105 '\u0663', '\u0664', '\u0665', '\u0666', '\u0667', '\u0668', '\u0669', '\u06F0', '\u06F1', '\u06F2', '\u06F3', '\u06F4', '\u06F5',
106 '\u06F6', '\u06F7', '\u06F8', '\u06F9', '\u07C0', '\u07C1', '\u07C2', '\u07C3', '\u07C4', '\u07C5', '\u07C6', '\u07C7', '\u07C8',
107 '\u07C9', '\u0966', '\u0967', '\u0968', '\u0969', '\u096A', '\u096B', '\u096C', '\u096D', '\u096E', '\u096F', '\u09E6', '\u09E7',
108 '\u09E8', '\u09E9', '\u09EA', '\u09EB', '\u09EC', '\u09ED', '\u09EE', '\u09EF', '\u0A66', '\u0A67', '\u0A68', '\u0A69', '\u0A6A',
109 '\u0A6B', '\u0A6C', '\u0A6D', '\u0A6E', '\u0A6F', '\u0AE6', '\u0AE7', '\u0AE8', '\u0AE9', '\u0AEA', '\u0AEB', '\u0AEC', '\u0AED',
110 '\u0AEE', '\u0AEF', '\u0B66', '\u0B67', '\u0B68', '\u0B69', '\u0B6A', '\u0B6B', '\u0B6C', '\u0B6D', '\u0B6E', '\u0B6F', '\u0BE6',
111 '\u0BE7', '\u0BE8', '\u0BE9', '\u0BEA', '\u0BEB', '\u0BEC', '\u0BED', '\u0BEE', '\u0BEF', '\u0C66', '\u0C67', '\u0C68', '\u0C69',
112 '\u0C6A', '\u0C6B', '\u0C6C', '\u0C6D', '\u0C6E', '\u0C6F', '\u0CE6', '\u0CE7', '\u0CE8', '\u0CE9', '\u0CEA', '\u0CEB', '\u0CEC',
113 '\u0CED', '\u0CEE', '\u0CEF', '\u0D66', '\u0D67', '\u0D68', '\u0D69', '\u0D6A', '\u0D6B', '\u0D6C', '\u0D6D', '\u0D6E', '\u0D6F',
114 '\u0E50', '\u0E51', '\u0E52', '\u0E53', '\u0E54', '\u0E55', '\u0E56', '\u0E57', '\u0E58', '\u0E59', '\u0ED0', '\u0ED1', '\u0ED2',
115 '\u0ED3', '\u0ED4', '\u0ED5', '\u0ED6', '\u0ED7', '\u0ED8', '\u0ED9', '\u0F20', '\u0F21', '\u0F22', '\u0F23', '\u0F24', '\u0F25',
116 '\u0F26', '\u0F27', '\u0F28', '\u0F29', '\u1040', '\u1041', '\u1042', '\u1043', '\u1044', '\u1045', '\u1046', '\u1047', '\u1048',
117 '\u1049', '\u1090', '\u1091', '\u1092', '\u1093', '\u1094', '\u1095', '\u1096', '\u1097', '\u1098', '\u1099', '\u17E0', '\u17E1',
118 '\u17E2', '\u17E3', '\u17E4', '\u17E5', '\u17E6', '\u17E7', '\u17E8', '\u17E9', '\u1810', '\u1811', '\u1812', '\u1813', '\u1814',
119 '\u1815', '\u1816', '\u1817', '\u1818', '\u1819', '\u1946', '\u1947', '\u1948', '\u1949', '\u194A', '\u194B', '\u194C', '\u194D',
120 '\u194E', '\u194F', '\u19D0', '\u19D1', '\u19D2', '\u19D3', '\u19D4', '\u19D5', '\u19D6', '\u19D7', '\u19D8', '\u19D9', '\u1A80',
121 '\u1A81', '\u1A82', '\u1A83', '\u1A84', '\u1A85', '\u1A86', '\u1A87', '\u1A88', '\u1A89', '\u1A90', '\u1A91', '\u1A92', '\u1A93',
122 '\u1A94', '\u1A95', '\u1A96', '\u1A97', '\u1A98', '\u1A99', '\u1B50', '\u1B51', '\u1B52', '\u1B53', '\u1B54', '\u1B55', '\u1B56',
123 '\u1B57', '\u1B58', '\u1B59', '\u1BB0', '\u1BB1', '\u1BB2', '\u1BB3', '\u1BB4', '\u1BB5', '\u1BB6', '\u1BB7', '\u1BB8', '\u1BB9',
124 '\u1C40', '\u1C41', '\u1C42', '\u1C43', '\u1C44', '\u1C45', '\u1C46', '\u1C47', '\u1C48', '\u1C49', '\u1C50', '\u1C51', '\u1C52',
125 '\u1C53', '\u1C54', '\u1C55', '\u1C56', '\u1C57', '\u1C58', '\u1C59', '\uA620', '\uA621', '\uA622', '\uA623', '\uA624', '\uA625',
126 '\uA626', '\uA627', '\uA628', '\uA629', '\uA8D0', '\uA8D1', '\uA8D2', '\uA8D3', '\uA8D4', '\uA8D5', '\uA8D6', '\uA8D7', '\uA8D8',
127 '\uA8D9', '\uA900', '\uA901', '\uA902', '\uA903', '\uA904', '\uA905', '\uA906', '\uA907', '\uA908', '\uA909', '\uA9D0', '\uA9D1',
128 '\uA9D2', '\uA9D3', '\uA9D4', '\uA9D5', '\uA9D6', '\uA9D7', '\uA9D8', '\uA9D9', '\uAA50', '\uAA51', '\uAA52', '\uAA53', '\uAA54',
129 '\uAA55', '\uAA56', '\uAA57', '\uAA58', '\uAA59', '\uABF0', '\uABF1', '\uABF2', '\uABF3', '\uABF4', '\uABF5', '\uABF6', '\uABF7',
130 '\uABF8', '\uABF9', '\uFF10', '\uFF11', '\uFF12', '\uFF13', '\uFF14', '\uFF15', '\uFF16', '\uFF17', '\uFF18', '\uFF19', '\U000104A0',
131 '\U000104A1', '\U000104A2', '\U000104A3', '\U000104A4', '\U000104A5', '\U000104A6', '\U000104A7', '\U000104A8', '\U000104A9', '\U00011066',
132 '\U00011067', '\U00011068', '\U00011069', '\U0001106A', '\U0001106B', '\U0001106C', '\U0001106D', '\U0001106E', '\U0001106F', '\U0001D7CE',
133 '\U0001D7CF', '\U0001D7D0', '\U0001D7D1', '\U0001D7D2', '\U0001D7D3', '\U0001D7D4', '\U0001D7D5', '\U0001D7D6', '\U0001D7D7', '\U0001D7D8',
134 '\U0001D7D9', '\U0001D7DA', '\U0001D7DB', '\U0001D7DC', '\U0001D7DD', '\U0001D7DE', '\U0001D7DF', '\U0001D7E0', '\U0001D7E1', '\U0001D7E2',
135 '\U0001D7E3', '\U0001D7E4', '\U0001D7E5', '\U0001D7E6', '\U0001D7E7', '\U0001D7E8', '\U0001D7E9', '\U0001D7EA', '\U0001D7EB', '\U0001D7EC',
136 '\U0001D7ED', '\U0001D7EE', '\U0001D7EF', '\U0001D7F0', '\U0001D7F1', '\U0001D7F2', '\U0001D7F3', '\U0001D7F4', '\U0001D7F5', '\U0001D7F6',
137 '\U0001D7F7', '\U0001D7F8', '\U0001D7F9', '\U0001D7FA', '\U0001D7FB', '\U0001D7FC', '\U0001D7FD', '\U0001D7FE', '\U0001D7FF'
138 ];
139 foreach(dchar Nd; unicodeNd)
140 if(Nd == c)
141 return true;
142 else if(Nd > c)
143 break;
144 return false;
92 } 145 }
93 } 146 }
94 public static bool isLetter( dchar c ){ 147 public static bool isLetter( dchar c ){
95 version(Tango){ 148 version(Tango){
96 return tango.text.Unicode.isLetter(c); 149 return tango.text.Unicode.isLetter(c);