2
0
Эх сурвалжийг харах

Added Pinyin characters to upper and lower case functions.

David Piuva 1 сар өмнө
parent
commit
5d02190887

+ 5 - 1
Source/DFPSR/api/stringAPI.cpp

@@ -88,7 +88,7 @@ String Printable::toString() const {
 
 Printable::~Printable() {}
 
-// TODO: Handle the remaining Unicode characters after nj (460), starting from Pinyin.
+// TODO: Handle the remaining Unicode characters after ǜ (476).
 
 DsrChar dsr::character_upperCase(DsrChar character) {
 	if (U'a' <= character && character <= U'z') { // a (97) to z (122) Ascii
@@ -149,6 +149,8 @@ DsrChar dsr::character_upperCase(DsrChar character) {
 		return U'LJ'; // LJ (457)
 	} else if (character == U'nj' || character == U'Nj') { // nj, Nj (460, 459) Latin Extended-B
 		return U'NJ'; // NJ (460)
+	} else if (U'Ǎ' <= character && character <= U'ǜ' && !(character & 1)) { // Even from Ǎ (461) to ǜ (476) Latin Extended-B Pinyin
+		return character - 1;
 	} else {
 		return character;
 	}
@@ -213,6 +215,8 @@ DsrChar dsr::character_lowerCase(DsrChar character) {
 		return U'lj'; // lj (457)
 	} else if (character == U'NJ' || character == U'Nj') { // NJ, Nj (458, 459) Latin Extended-B
 		return U'nj'; // nj (460)
+	} else if (U'Ǎ' <= character && character <= U'ǜ' && character & 1) { // Odd from Ǎ (461) to ǜ (476) Latin Extended-B Pinyin
+		return character + 1;
 	} else {
 		return character;
 	}

+ 2 - 0
Source/test/tests/StringTest.cpp

@@ -192,6 +192,7 @@ START_TEST(String)
 	ASSERT_EQUAL(dsr::string_upperCase(U"313 to 328 ĺļľŀłńņň ĹĻĽĿŁŃŅŇ"), U"313 TO 328 ĹĻĽĿŁŃŅŇ ĹĻĽĿŁŃŅŇ");
 	ASSERT_EQUAL(dsr::string_upperCase(U"330 to 375 ŋōŏőœŕŗřśŝşšţťŧũūŭůűųŵŷ ŊŌŎŐŒŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶ"), U"330 TO 375 ŊŌŎŐŒŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶ ŊŌŎŐŒŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶ");
 	ASSERT_EQUAL(dsr::string_upperCase(U"377 to 382 źżž ŹŻŽ"), U"377 TO 382 ŹŻŽ ŹŻŽ");
+	ASSERT_EQUAL(dsr::string_upperCase(U"461 to 476 ǍǎǏǐǑǒǓǔǕǖǗǘǙǚǛǜ"), U"461 TO 476 ǍǍǏǏǑǑǓǓǕǕǗǗǙǙǛǛ");
 	// Lower case
 	ASSERT_EQUAL(dsr::string_lowerCase(U"a"), U"a");
 	ASSERT_EQUAL(dsr::string_lowerCase(U"aB"), U"ab");
@@ -206,6 +207,7 @@ START_TEST(String)
 	ASSERT_EQUAL(dsr::string_lowerCase(U"313 to 328 ĺļľŀłńņň ĹĻĽĿŁŃŅŇ"), U"313 to 328 ĺļľŀłńņň ĺļľŀłńņň");
 	ASSERT_EQUAL(dsr::string_lowerCase(U"330 to 375 ŋōŏőœŕŗřśŝşšţťŧũūŭůűųŵŷ ŊŌŎŐŒŔŖŘŚŜŞŠŢŤŦŨŪŬŮŰŲŴŶ"), U"330 to 375 ŋōŏőœŕŗřśŝşšţťŧũūŭůűųŵŷ ŋōŏőœŕŗřśŝşšţťŧũūŭůűųŵŷ");
 	ASSERT_EQUAL(dsr::string_lowerCase(U"377 to 382 źżž ŹŻŽ"), U"377 to 382 źżž źżž");
+	ASSERT_EQUAL(dsr::string_lowerCase(U"461 to 476 ǍǎǏǐǑǒǓǔǕǖǗǘǙǚǛǜ"), U"461 to 476 ǎǎǐǐǒǒǔǔǖǖǘǘǚǚǜǜ");
 	// White space removal by pointing to a section of the original input
 	ASSERT_EQUAL(dsr::string_removeOuterWhiteSpace(U" "), U"");
 	ASSERT_EQUAL(dsr::string_removeOuterWhiteSpace(U"  abc  "), U"abc");