unicode_case_converter 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/unicode_case_converter.rb +136 -120
- data/lib/unicode_case_converter/version.rb +1 -1
- data/spec/unicode_case_converter_spec.rb +84 -11
- data/unicode_case_converter.gemspec +2 -0
- metadata +30 -3
- data/unicode_data_importer.rb +0 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8147ac9237fe2a9342e9233920cd704de361b475
|
4
|
+
data.tar.gz: 653128b15114cb8c6d76f40b669275542f59b768
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 996aecfad4635f622695e573ca94e9c8813b185302e33032fa1ec238f94b15c25a24defad1d14a61313106fa439d778c5583d4fd5ec42216d7e393e85663b14e
|
7
|
+
data.tar.gz: 37aea4013ee039d5a7cd55153a1997c88e5c170ad289a6145c36193ab296eafd0257ab828a7ef2f2620fb997ecbd8d621d2376cdf530120aad9eb2d1952ac0d6
|
@@ -8,136 +8,152 @@ module UnicodeCaseConverter
|
|
8
8
|
UPCASE_UPPERCASE_CHARACTERS = "\u{0041}\u{0042}\u{0043}\u{0044}\u{0045}\u{0046}\u{0047}\u{0048}\u{0049}\u{004A}\u{004B}\u{004C}\u{004D}\u{004E}\u{004F}\u{0050}\u{0051}\u{0052}\u{0053}\u{0054}\u{0055}\u{0056}\u{0057}\u{0058}\u{0059}\u{005A}\u{039C}\u{00C0}\u{00C1}\u{00C2}\u{00C3}\u{00C4}\u{00C5}\u{00C6}\u{00C7}\u{00C8}\u{00C9}\u{00CA}\u{00CB}\u{00CC}\u{00CD}\u{00CE}\u{00CF}\u{00D0}\u{00D1}\u{00D2}\u{00D3}\u{00D4}\u{00D5}\u{00D6}\u{00D8}\u{00D9}\u{00DA}\u{00DB}\u{00DC}\u{00DD}\u{00DE}\u{0178}\u{0100}\u{0102}\u{0104}\u{0106}\u{0108}\u{010A}\u{010C}\u{010E}\u{0110}\u{0112}\u{0114}\u{0116}\u{0118}\u{011A}\u{011C}\u{011E}\u{0120}\u{0122}\u{0124}\u{0126}\u{0128}\u{012A}\u{012C}\u{012E}\u{0049}\u{0132}\u{0134}\u{0136}\u{0139}\u{013B}\u{013D}\u{013F}\u{0141}\u{0143}\u{0145}\u{0147}\u{014A}\u{014C}\u{014E}\u{0150}\u{0152}\u{0154}\u{0156}\u{0158}\u{015A}\u{015C}\u{015E}\u{0160}\u{0162}\u{0164}\u{0166}\u{0168}\u{016A}\u{016C}\u{016E}\u{0170}\u{0172}\u{0174}\u{0176}\u{0179}\u{017B}\u{017D}\u{0053}\u{0243}\u{0182}\u{0184}\u{0187}\u{018B}\u{0191}\u{01F6}\u{0198}\u{023D}\u{0220}\u{01A0}\u{01A2}\u{01A4}\u{01A7}\u{01AC}\u{01AF}\u{01B3}\u{01B5}\u{01B8}\u{01BC}\u{01F7}\u{01C5}\u{01C5}\u{01C5}\u{01C8}\u{01C8}\u{01C8}\u{01CB}\u{01CB}\u{01CB}\u{01CD}\u{01CF}\u{01D1}\u{01D3}\u{01D5}\u{01D7}\u{01D9}\u{01DB}\u{018E}\u{01DE}\u{01E0}\u{01E2}\u{01E4}\u{01E6}\u{01E8}\u{01EA}\u{01EC}\u{01EE}\u{01F2}\u{01F2}\u{01F2}\u{01F4}\u{01F8}\u{01FA}\u{01FC}\u{01FE}\u{0200}\u{0202}\u{0204}\u{0206}\u{0208}\u{020A}\u{020C}\u{020E}\u{0210}\u{0212}\u{0214}\u{0216}\u{0218}\u{021A}\u{021C}\u{021E}\u{0222}\u{0224}\u{0226}\u{0228}\u{022A}\u{022C}\u{022E}\u{0230}\u{0232}\u{023B}\u{2C7E}\u{2C7F}\u{0241}\u{0246}\u{0248}\u{024A}\u{024C}\u{024E}\u{2C6F}\u{2C6D}\u{2C70}\u{0181}\u{0186}\u{0189}\u{018A}\u{018F}\u{0190}\u{A7AB}\u{0193}\u{A7AC}\u{0194}\u{A78D}\u{A7AA}\u{0197}\u{0196}\u{2C62}\u{A7AD}\u{019C}\u{2C6E}\u{019D}\u{019F}\u{2C64}\u{01A6}\u{01A9}\u{A7B1}\u{01AE}\u{0244}\u{01B1}\u{01B2}\u{0245}\u{01B7}\u{A7B2}\u{A7B0}\u{0399}\u{0370}\u{0372}\u{0376}\u{03FD}\u{03FE}\u{03FF}\u{0386}\u{0388}\u{0389}\u{038A}\u{0391}\u{0392}\u{0393}\u{0394}\u{0395}\u{0396}\u{0397}\u{0398}\u{0399}\u{039A}\u{039B}\u{039C}\u{039D}\u{039E}\u{039F}\u{03A0}\u{03A1}\u{03A3}\u{03A3}\u{03A4}\u{03A5}\u{03A6}\u{03A7}\u{03A8}\u{03A9}\u{03AA}\u{03AB}\u{038C}\u{038E}\u{038F}\u{0392}\u{0398}\u{03A6}\u{03A0}\u{03CF}\u{03D8}\u{03DA}\u{03DC}\u{03DE}\u{03E0}\u{03E2}\u{03E4}\u{03E6}\u{03E8}\u{03EA}\u{03EC}\u{03EE}\u{039A}\u{03A1}\u{03F9}\u{037F}\u{0395}\u{03F7}\u{03FA}\u{0410}\u{0411}\u{0412}\u{0413}\u{0414}\u{0415}\u{0416}\u{0417}\u{0418}\u{0419}\u{041A}\u{041B}\u{041C}\u{041D}\u{041E}\u{041F}\u{0420}\u{0421}\u{0422}\u{0423}\u{0424}\u{0425}\u{0426}\u{0427}\u{0428}\u{0429}\u{042A}\u{042B}\u{042C}\u{042D}\u{042E}\u{042F}\u{0400}\u{0401}\u{0402}\u{0403}\u{0404}\u{0405}\u{0406}\u{0407}\u{0408}\u{0409}\u{040A}\u{040B}\u{040C}\u{040D}\u{040E}\u{040F}\u{0460}\u{0462}\u{0464}\u{0466}\u{0468}\u{046A}\u{046C}\u{046E}\u{0470}\u{0472}\u{0474}\u{0476}\u{0478}\u{047A}\u{047C}\u{047E}\u{0480}\u{048A}\u{048C}\u{048E}\u{0490}\u{0492}\u{0494}\u{0496}\u{0498}\u{049A}\u{049C}\u{049E}\u{04A0}\u{04A2}\u{04A4}\u{04A6}\u{04A8}\u{04AA}\u{04AC}\u{04AE}\u{04B0}\u{04B2}\u{04B4}\u{04B6}\u{04B8}\u{04BA}\u{04BC}\u{04BE}\u{04C1}\u{04C3}\u{04C5}\u{04C7}\u{04C9}\u{04CB}\u{04CD}\u{04C0}\u{04D0}\u{04D2}\u{04D4}\u{04D6}\u{04D8}\u{04DA}\u{04DC}\u{04DE}\u{04E0}\u{04E2}\u{04E4}\u{04E6}\u{04E8}\u{04EA}\u{04EC}\u{04EE}\u{04F0}\u{04F2}\u{04F4}\u{04F6}\u{04F8}\u{04FA}\u{04FC}\u{04FE}\u{0500}\u{0502}\u{0504}\u{0506}\u{0508}\u{050A}\u{050C}\u{050E}\u{0510}\u{0512}\u{0514}\u{0516}\u{0518}\u{051A}\u{051C}\u{051E}\u{0520}\u{0522}\u{0524}\u{0526}\u{0528}\u{052A}\u{052C}\u{052E}\u{0531}\u{0532}\u{0533}\u{0534}\u{0535}\u{0536}\u{0537}\u{0538}\u{0539}\u{053A}\u{053B}\u{053C}\u{053D}\u{053E}\u{053F}\u{0540}\u{0541}\u{0542}\u{0543}\u{0544}\u{0545}\u{0546}\u{0547}\u{0548}\u{0549}\u{054A}\u{054B}\u{054C}\u{054D}\u{054E}\u{054F}\u{0550}\u{0551}\u{0552}\u{0553}\u{0554}\u{0555}\u{0556}\u{13F0}\u{13F1}\u{13F2}\u{13F3}\u{13F4}\u{13F5}\u{A77D}\u{2C63}\u{1E00}\u{1E02}\u{1E04}\u{1E06}\u{1E08}\u{1E0A}\u{1E0C}\u{1E0E}\u{1E10}\u{1E12}\u{1E14}\u{1E16}\u{1E18}\u{1E1A}\u{1E1C}\u{1E1E}\u{1E20}\u{1E22}\u{1E24}\u{1E26}\u{1E28}\u{1E2A}\u{1E2C}\u{1E2E}\u{1E30}\u{1E32}\u{1E34}\u{1E36}\u{1E38}\u{1E3A}\u{1E3C}\u{1E3E}\u{1E40}\u{1E42}\u{1E44}\u{1E46}\u{1E48}\u{1E4A}\u{1E4C}\u{1E4E}\u{1E50}\u{1E52}\u{1E54}\u{1E56}\u{1E58}\u{1E5A}\u{1E5C}\u{1E5E}\u{1E60}\u{1E62}\u{1E64}\u{1E66}\u{1E68}\u{1E6A}\u{1E6C}\u{1E6E}\u{1E70}\u{1E72}\u{1E74}\u{1E76}\u{1E78}\u{1E7A}\u{1E7C}\u{1E7E}\u{1E80}\u{1E82}\u{1E84}\u{1E86}\u{1E88}\u{1E8A}\u{1E8C}\u{1E8E}\u{1E90}\u{1E92}\u{1E94}\u{1E60}\u{1EA0}\u{1EA2}\u{1EA4}\u{1EA6}\u{1EA8}\u{1EAA}\u{1EAC}\u{1EAE}\u{1EB0}\u{1EB2}\u{1EB4}\u{1EB6}\u{1EB8}\u{1EBA}\u{1EBC}\u{1EBE}\u{1EC0}\u{1EC2}\u{1EC4}\u{1EC6}\u{1EC8}\u{1ECA}\u{1ECC}\u{1ECE}\u{1ED0}\u{1ED2}\u{1ED4}\u{1ED6}\u{1ED8}\u{1EDA}\u{1EDC}\u{1EDE}\u{1EE0}\u{1EE2}\u{1EE4}\u{1EE6}\u{1EE8}\u{1EEA}\u{1EEC}\u{1EEE}\u{1EF0}\u{1EF2}\u{1EF4}\u{1EF6}\u{1EF8}\u{1EFA}\u{1EFC}\u{1EFE}\u{1F08}\u{1F09}\u{1F0A}\u{1F0B}\u{1F0C}\u{1F0D}\u{1F0E}\u{1F0F}\u{1F18}\u{1F19}\u{1F1A}\u{1F1B}\u{1F1C}\u{1F1D}\u{1F28}\u{1F29}\u{1F2A}\u{1F2B}\u{1F2C}\u{1F2D}\u{1F2E}\u{1F2F}\u{1F38}\u{1F39}\u{1F3A}\u{1F3B}\u{1F3C}\u{1F3D}\u{1F3E}\u{1F3F}\u{1F48}\u{1F49}\u{1F4A}\u{1F4B}\u{1F4C}\u{1F4D}\u{1F59}\u{1F5B}\u{1F5D}\u{1F5F}\u{1F68}\u{1F69}\u{1F6A}\u{1F6B}\u{1F6C}\u{1F6D}\u{1F6E}\u{1F6F}\u{1FBA}\u{1FBB}\u{1FC8}\u{1FC9}\u{1FCA}\u{1FCB}\u{1FDA}\u{1FDB}\u{1FF8}\u{1FF9}\u{1FEA}\u{1FEB}\u{1FFA}\u{1FFB}\u{1F88}\u{1F89}\u{1F8A}\u{1F8B}\u{1F8C}\u{1F8D}\u{1F8E}\u{1F8F}\u{1F98}\u{1F99}\u{1F9A}\u{1F9B}\u{1F9C}\u{1F9D}\u{1F9E}\u{1F9F}\u{1FA8}\u{1FA9}\u{1FAA}\u{1FAB}\u{1FAC}\u{1FAD}\u{1FAE}\u{1FAF}\u{1FB8}\u{1FB9}\u{1FBC}\u{0399}\u{1FCC}\u{1FD8}\u{1FD9}\u{1FE8}\u{1FE9}\u{1FEC}\u{1FFC}\u{2132}\u{2160}\u{2161}\u{2162}\u{2163}\u{2164}\u{2165}\u{2166}\u{2167}\u{2168}\u{2169}\u{216A}\u{216B}\u{216C}\u{216D}\u{216E}\u{216F}\u{2183}\u{24B6}\u{24B7}\u{24B8}\u{24B9}\u{24BA}\u{24BB}\u{24BC}\u{24BD}\u{24BE}\u{24BF}\u{24C0}\u{24C1}\u{24C2}\u{24C3}\u{24C4}\u{24C5}\u{24C6}\u{24C7}\u{24C8}\u{24C9}\u{24CA}\u{24CB}\u{24CC}\u{24CD}\u{24CE}\u{24CF}\u{2C00}\u{2C01}\u{2C02}\u{2C03}\u{2C04}\u{2C05}\u{2C06}\u{2C07}\u{2C08}\u{2C09}\u{2C0A}\u{2C0B}\u{2C0C}\u{2C0D}\u{2C0E}\u{2C0F}\u{2C10}\u{2C11}\u{2C12}\u{2C13}\u{2C14}\u{2C15}\u{2C16}\u{2C17}\u{2C18}\u{2C19}\u{2C1A}\u{2C1B}\u{2C1C}\u{2C1D}\u{2C1E}\u{2C1F}\u{2C20}\u{2C21}\u{2C22}\u{2C23}\u{2C24}\u{2C25}\u{2C26}\u{2C27}\u{2C28}\u{2C29}\u{2C2A}\u{2C2B}\u{2C2C}\u{2C2D}\u{2C2E}\u{2C60}\u{023A}\u{023E}\u{2C67}\u{2C69}\u{2C6B}\u{2C72}\u{2C75}\u{2C80}\u{2C82}\u{2C84}\u{2C86}\u{2C88}\u{2C8A}\u{2C8C}\u{2C8E}\u{2C90}\u{2C92}\u{2C94}\u{2C96}\u{2C98}\u{2C9A}\u{2C9C}\u{2C9E}\u{2CA0}\u{2CA2}\u{2CA4}\u{2CA6}\u{2CA8}\u{2CAA}\u{2CAC}\u{2CAE}\u{2CB0}\u{2CB2}\u{2CB4}\u{2CB6}\u{2CB8}\u{2CBA}\u{2CBC}\u{2CBE}\u{2CC0}\u{2CC2}\u{2CC4}\u{2CC6}\u{2CC8}\u{2CCA}\u{2CCC}\u{2CCE}\u{2CD0}\u{2CD2}\u{2CD4}\u{2CD6}\u{2CD8}\u{2CDA}\u{2CDC}\u{2CDE}\u{2CE0}\u{2CE2}\u{2CEB}\u{2CED}\u{2CF2}\u{10A0}\u{10A1}\u{10A2}\u{10A3}\u{10A4}\u{10A5}\u{10A6}\u{10A7}\u{10A8}\u{10A9}\u{10AA}\u{10AB}\u{10AC}\u{10AD}\u{10AE}\u{10AF}\u{10B0}\u{10B1}\u{10B2}\u{10B3}\u{10B4}\u{10B5}\u{10B6}\u{10B7}\u{10B8}\u{10B9}\u{10BA}\u{10BB}\u{10BC}\u{10BD}\u{10BE}\u{10BF}\u{10C0}\u{10C1}\u{10C2}\u{10C3}\u{10C4}\u{10C5}\u{10C7}\u{10CD}\u{A640}\u{A642}\u{A644}\u{A646}\u{A648}\u{A64A}\u{A64C}\u{A64E}\u{A650}\u{A652}\u{A654}\u{A656}\u{A658}\u{A65A}\u{A65C}\u{A65E}\u{A660}\u{A662}\u{A664}\u{A666}\u{A668}\u{A66A}\u{A66C}\u{A680}\u{A682}\u{A684}\u{A686}\u{A688}\u{A68A}\u{A68C}\u{A68E}\u{A690}\u{A692}\u{A694}\u{A696}\u{A698}\u{A69A}\u{A722}\u{A724}\u{A726}\u{A728}\u{A72A}\u{A72C}\u{A72E}\u{A732}\u{A734}\u{A736}\u{A738}\u{A73A}\u{A73C}\u{A73E}\u{A740}\u{A742}\u{A744}\u{A746}\u{A748}\u{A74A}\u{A74C}\u{A74E}\u{A750}\u{A752}\u{A754}\u{A756}\u{A758}\u{A75A}\u{A75C}\u{A75E}\u{A760}\u{A762}\u{A764}\u{A766}\u{A768}\u{A76A}\u{A76C}\u{A76E}\u{A779}\u{A77B}\u{A77E}\u{A780}\u{A782}\u{A784}\u{A786}\u{A78B}\u{A790}\u{A792}\u{A796}\u{A798}\u{A79A}\u{A79C}\u{A79E}\u{A7A0}\u{A7A2}\u{A7A4}\u{A7A6}\u{A7A8}\u{A7B4}\u{A7B6}\u{A7B3}\u{13A0}\u{13A1}\u{13A2}\u{13A3}\u{13A4}\u{13A5}\u{13A6}\u{13A7}\u{13A8}\u{13A9}\u{13AA}\u{13AB}\u{13AC}\u{13AD}\u{13AE}\u{13AF}\u{13B0}\u{13B1}\u{13B2}\u{13B3}\u{13B4}\u{13B5}\u{13B6}\u{13B7}\u{13B8}\u{13B9}\u{13BA}\u{13BB}\u{13BC}\u{13BD}\u{13BE}\u{13BF}\u{13C0}\u{13C1}\u{13C2}\u{13C3}\u{13C4}\u{13C5}\u{13C6}\u{13C7}\u{13C8}\u{13C9}\u{13CA}\u{13CB}\u{13CC}\u{13CD}\u{13CE}\u{13CF}\u{13D0}\u{13D1}\u{13D2}\u{13D3}\u{13D4}\u{13D5}\u{13D6}\u{13D7}\u{13D8}\u{13D9}\u{13DA}\u{13DB}\u{13DC}\u{13DD}\u{13DE}\u{13DF}\u{13E0}\u{13E1}\u{13E2}\u{13E3}\u{13E4}\u{13E5}\u{13E6}\u{13E7}\u{13E8}\u{13E9}\u{13EA}\u{13EB}\u{13EC}\u{13ED}\u{13EE}\u{13EF}\u{FF21}\u{FF22}\u{FF23}\u{FF24}\u{FF25}\u{FF26}\u{FF27}\u{FF28}\u{FF29}\u{FF2A}\u{FF2B}\u{FF2C}\u{FF2D}\u{FF2E}\u{FF2F}\u{FF30}\u{FF31}\u{FF32}\u{FF33}\u{FF34}\u{FF35}\u{FF36}\u{FF37}\u{FF38}\u{FF39}\u{FF3A}\u{10400}\u{10401}\u{10402}\u{10403}\u{10404}\u{10405}\u{10406}\u{10407}\u{10408}\u{10409}\u{1040A}\u{1040B}\u{1040C}\u{1040D}\u{1040E}\u{1040F}\u{10410}\u{10411}\u{10412}\u{10413}\u{10414}\u{10415}\u{10416}\u{10417}\u{10418}\u{10419}\u{1041A}\u{1041B}\u{1041C}\u{1041D}\u{1041E}\u{1041F}\u{10420}\u{10421}\u{10422}\u{10423}\u{10424}\u{10425}\u{10426}\u{10427}\u{10C80}\u{10C81}\u{10C82}\u{10C83}\u{10C84}\u{10C85}\u{10C86}\u{10C87}\u{10C88}\u{10C89}\u{10C8A}\u{10C8B}\u{10C8C}\u{10C8D}\u{10C8E}\u{10C8F}\u{10C90}\u{10C91}\u{10C92}\u{10C93}\u{10C94}\u{10C95}\u{10C96}\u{10C97}\u{10C98}\u{10C99}\u{10C9A}\u{10C9B}\u{10C9C}\u{10C9D}\u{10C9E}\u{10C9F}\u{10CA0}\u{10CA1}\u{10CA2}\u{10CA3}\u{10CA4}\u{10CA5}\u{10CA6}\u{10CA7}\u{10CA8}\u{10CA9}\u{10CAA}\u{10CAB}\u{10CAC}\u{10CAD}\u{10CAE}\u{10CAF}\u{10CB0}\u{10CB1}\u{10CB2}\u{118A0}\u{118A1}\u{118A2}\u{118A3}\u{118A4}\u{118A5}\u{118A6}\u{118A7}\u{118A8}\u{118A9}\u{118AA}\u{118AB}\u{118AC}\u{118AD}\u{118AE}\u{118AF}\u{118B0}\u{118B1}\u{118B2}\u{118B3}\u{118B4}\u{118B5}\u{118B6}\u{118B7}\u{118B8}\u{118B9}\u{118BA}\u{118BB}\u{118BC}\u{118BD}\u{118BE}\u{118BF}\u{0053}\u{01C4}\u{01C4}\u{01C4}\u{01C7}\u{01C7}\u{01C7}\u{01CA}\u{01CA}\u{01CA}\u{01F1}\u{01F1}\u{01F1}\u{025C}\u{0261}\u{026C}\u{0287}\u{029D}\u{029E}\u{03F3}\u{0529}\u{052B}\u{052D}\u{052F}\u{13F8}\u{13F9}\u{13FA}\u{13FB}\u{13FC}\u{13FD}".freeze
|
9
9
|
DOWNCASE_LOWERCASE_CHARACTERS = "\u{0061}\u{0062}\u{0063}\u{0064}\u{0065}\u{0066}\u{0067}\u{0068}\u{0069}\u{006A}\u{006B}\u{006C}\u{006D}\u{006E}\u{006F}\u{0070}\u{0071}\u{0072}\u{0073}\u{0074}\u{0075}\u{0076}\u{0077}\u{0078}\u{0079}\u{007A}\u{00E0}\u{00E1}\u{00E2}\u{00E3}\u{00E4}\u{00E5}\u{00E6}\u{00E7}\u{00E8}\u{00E9}\u{00EA}\u{00EB}\u{00EC}\u{00ED}\u{00EE}\u{00EF}\u{00F0}\u{00F1}\u{00F2}\u{00F3}\u{00F4}\u{00F5}\u{00F6}\u{00F8}\u{00F9}\u{00FA}\u{00FB}\u{00FC}\u{00FD}\u{00FE}\u{00FF}\u{0101}\u{0103}\u{0105}\u{0107}\u{0109}\u{010B}\u{010D}\u{010F}\u{0111}\u{0113}\u{0115}\u{0117}\u{0119}\u{011B}\u{011D}\u{011F}\u{0121}\u{0123}\u{0125}\u{0127}\u{0129}\u{012B}\u{012D}\u{012F}\u{0133}\u{0135}\u{0137}\u{013A}\u{013C}\u{013E}\u{0140}\u{0142}\u{0144}\u{0146}\u{0148}\u{014B}\u{014D}\u{014F}\u{0151}\u{0153}\u{0155}\u{0157}\u{0159}\u{015B}\u{015D}\u{015F}\u{0161}\u{0163}\u{0165}\u{0167}\u{0169}\u{016B}\u{016D}\u{016F}\u{0171}\u{0173}\u{0175}\u{0177}\u{017A}\u{017C}\u{017E}\u{0180}\u{0183}\u{0185}\u{0188}\u{018C}\u{0192}\u{0195}\u{0199}\u{019A}\u{019E}\u{01A1}\u{01A3}\u{01A5}\u{01A8}\u{01AD}\u{01B0}\u{01B4}\u{01B6}\u{01B9}\u{01BD}\u{01BF}\u{01C6}\u{01C9}\u{01CC}\u{01CE}\u{01D0}\u{01D2}\u{01D4}\u{01D6}\u{01D8}\u{01DA}\u{01DC}\u{01DD}\u{01DF}\u{01E1}\u{01E3}\u{01E5}\u{01E7}\u{01E9}\u{01EB}\u{01ED}\u{01EF}\u{01F3}\u{01F5}\u{01F9}\u{01FB}\u{01FD}\u{01FF}\u{0201}\u{0203}\u{0205}\u{0207}\u{0209}\u{020B}\u{020D}\u{020F}\u{0211}\u{0213}\u{0215}\u{0217}\u{0219}\u{021B}\u{021D}\u{021F}\u{0223}\u{0225}\u{0227}\u{0229}\u{022B}\u{022D}\u{022F}\u{0231}\u{0233}\u{023C}\u{023F}\u{0240}\u{0242}\u{0247}\u{0249}\u{024B}\u{024D}\u{024F}\u{0250}\u{0251}\u{0252}\u{0253}\u{0254}\u{0256}\u{0257}\u{0259}\u{025B}\u{025C}\u{0260}\u{0261}\u{0263}\u{0265}\u{0266}\u{0268}\u{0269}\u{026B}\u{026C}\u{026F}\u{0271}\u{0272}\u{0275}\u{027D}\u{0280}\u{0283}\u{0287}\u{0288}\u{0289}\u{028A}\u{028B}\u{028C}\u{0292}\u{029D}\u{029E}\u{0371}\u{0373}\u{0377}\u{037B}\u{037C}\u{037D}\u{03AC}\u{03AD}\u{03AE}\u{03AF}\u{03B1}\u{03B2}\u{03B3}\u{03B4}\u{03B5}\u{03B6}\u{03B7}\u{03B8}\u{03B9}\u{03BA}\u{03BB}\u{03BC}\u{03BD}\u{03BE}\u{03BF}\u{03C0}\u{03C1}\u{03C3}\u{03C4}\u{03C5}\u{03C6}\u{03C7}\u{03C8}\u{03C9}\u{03CA}\u{03CB}\u{03CC}\u{03CD}\u{03CE}\u{03D7}\u{03D9}\u{03DB}\u{03DD}\u{03DF}\u{03E1}\u{03E3}\u{03E5}\u{03E7}\u{03E9}\u{03EB}\u{03ED}\u{03EF}\u{03F2}\u{03F3}\u{03F8}\u{03FB}\u{0430}\u{0431}\u{0432}\u{0433}\u{0434}\u{0435}\u{0436}\u{0437}\u{0438}\u{0439}\u{043A}\u{043B}\u{043C}\u{043D}\u{043E}\u{043F}\u{0440}\u{0441}\u{0442}\u{0443}\u{0444}\u{0445}\u{0446}\u{0447}\u{0448}\u{0449}\u{044A}\u{044B}\u{044C}\u{044D}\u{044E}\u{044F}\u{0450}\u{0451}\u{0452}\u{0453}\u{0454}\u{0455}\u{0456}\u{0457}\u{0458}\u{0459}\u{045A}\u{045B}\u{045C}\u{045D}\u{045E}\u{045F}\u{0461}\u{0463}\u{0465}\u{0467}\u{0469}\u{046B}\u{046D}\u{046F}\u{0471}\u{0473}\u{0475}\u{0477}\u{0479}\u{047B}\u{047D}\u{047F}\u{0481}\u{048B}\u{048D}\u{048F}\u{0491}\u{0493}\u{0495}\u{0497}\u{0499}\u{049B}\u{049D}\u{049F}\u{04A1}\u{04A3}\u{04A5}\u{04A7}\u{04A9}\u{04AB}\u{04AD}\u{04AF}\u{04B1}\u{04B3}\u{04B5}\u{04B7}\u{04B9}\u{04BB}\u{04BD}\u{04BF}\u{04C2}\u{04C4}\u{04C6}\u{04C8}\u{04CA}\u{04CC}\u{04CE}\u{04CF}\u{04D1}\u{04D3}\u{04D5}\u{04D7}\u{04D9}\u{04DB}\u{04DD}\u{04DF}\u{04E1}\u{04E3}\u{04E5}\u{04E7}\u{04E9}\u{04EB}\u{04ED}\u{04EF}\u{04F1}\u{04F3}\u{04F5}\u{04F7}\u{04F9}\u{04FB}\u{04FD}\u{04FF}\u{0501}\u{0503}\u{0505}\u{0507}\u{0509}\u{050B}\u{050D}\u{050F}\u{0511}\u{0513}\u{0515}\u{0517}\u{0519}\u{051B}\u{051D}\u{051F}\u{0521}\u{0523}\u{0525}\u{0527}\u{0529}\u{052B}\u{052D}\u{052F}\u{0561}\u{0562}\u{0563}\u{0564}\u{0565}\u{0566}\u{0567}\u{0568}\u{0569}\u{056A}\u{056B}\u{056C}\u{056D}\u{056E}\u{056F}\u{0570}\u{0571}\u{0572}\u{0573}\u{0574}\u{0575}\u{0576}\u{0577}\u{0578}\u{0579}\u{057A}\u{057B}\u{057C}\u{057D}\u{057E}\u{057F}\u{0580}\u{0581}\u{0582}\u{0583}\u{0584}\u{0585}\u{0586}\u{13F8}\u{13F9}\u{13FA}\u{13FB}\u{13FC}\u{13FD}\u{1D79}\u{1D7D}\u{1E01}\u{1E03}\u{1E05}\u{1E07}\u{1E09}\u{1E0B}\u{1E0D}\u{1E0F}\u{1E11}\u{1E13}\u{1E15}\u{1E17}\u{1E19}\u{1E1B}\u{1E1D}\u{1E1F}\u{1E21}\u{1E23}\u{1E25}\u{1E27}\u{1E29}\u{1E2B}\u{1E2D}\u{1E2F}\u{1E31}\u{1E33}\u{1E35}\u{1E37}\u{1E39}\u{1E3B}\u{1E3D}\u{1E3F}\u{1E41}\u{1E43}\u{1E45}\u{1E47}\u{1E49}\u{1E4B}\u{1E4D}\u{1E4F}\u{1E51}\u{1E53}\u{1E55}\u{1E57}\u{1E59}\u{1E5B}\u{1E5D}\u{1E5F}\u{1E61}\u{1E63}\u{1E65}\u{1E67}\u{1E69}\u{1E6B}\u{1E6D}\u{1E6F}\u{1E71}\u{1E73}\u{1E75}\u{1E77}\u{1E79}\u{1E7B}\u{1E7D}\u{1E7F}\u{1E81}\u{1E83}\u{1E85}\u{1E87}\u{1E89}\u{1E8B}\u{1E8D}\u{1E8F}\u{1E91}\u{1E93}\u{1E95}\u{1EA1}\u{1EA3}\u{1EA5}\u{1EA7}\u{1EA9}\u{1EAB}\u{1EAD}\u{1EAF}\u{1EB1}\u{1EB3}\u{1EB5}\u{1EB7}\u{1EB9}\u{1EBB}\u{1EBD}\u{1EBF}\u{1EC1}\u{1EC3}\u{1EC5}\u{1EC7}\u{1EC9}\u{1ECB}\u{1ECD}\u{1ECF}\u{1ED1}\u{1ED3}\u{1ED5}\u{1ED7}\u{1ED9}\u{1EDB}\u{1EDD}\u{1EDF}\u{1EE1}\u{1EE3}\u{1EE5}\u{1EE7}\u{1EE9}\u{1EEB}\u{1EED}\u{1EEF}\u{1EF1}\u{1EF3}\u{1EF5}\u{1EF7}\u{1EF9}\u{1EFB}\u{1EFD}\u{1EFF}\u{1F00}\u{1F01}\u{1F02}\u{1F03}\u{1F04}\u{1F05}\u{1F06}\u{1F07}\u{1F10}\u{1F11}\u{1F12}\u{1F13}\u{1F14}\u{1F15}\u{1F20}\u{1F21}\u{1F22}\u{1F23}\u{1F24}\u{1F25}\u{1F26}\u{1F27}\u{1F30}\u{1F31}\u{1F32}\u{1F33}\u{1F34}\u{1F35}\u{1F36}\u{1F37}\u{1F40}\u{1F41}\u{1F42}\u{1F43}\u{1F44}\u{1F45}\u{1F51}\u{1F53}\u{1F55}\u{1F57}\u{1F60}\u{1F61}\u{1F62}\u{1F63}\u{1F64}\u{1F65}\u{1F66}\u{1F67}\u{1F70}\u{1F71}\u{1F72}\u{1F73}\u{1F74}\u{1F75}\u{1F76}\u{1F77}\u{1F78}\u{1F79}\u{1F7A}\u{1F7B}\u{1F7C}\u{1F7D}\u{1F80}\u{1F81}\u{1F82}\u{1F83}\u{1F84}\u{1F85}\u{1F86}\u{1F87}\u{1F90}\u{1F91}\u{1F92}\u{1F93}\u{1F94}\u{1F95}\u{1F96}\u{1F97}\u{1FA0}\u{1FA1}\u{1FA2}\u{1FA3}\u{1FA4}\u{1FA5}\u{1FA6}\u{1FA7}\u{1FB0}\u{1FB1}\u{1FB3}\u{1FC3}\u{1FD0}\u{1FD1}\u{1FE0}\u{1FE1}\u{1FE5}\u{1FF3}\u{214E}\u{2170}\u{2171}\u{2172}\u{2173}\u{2174}\u{2175}\u{2176}\u{2177}\u{2178}\u{2179}\u{217A}\u{217B}\u{217C}\u{217D}\u{217E}\u{217F}\u{2184}\u{24D0}\u{24D1}\u{24D2}\u{24D3}\u{24D4}\u{24D5}\u{24D6}\u{24D7}\u{24D8}\u{24D9}\u{24DA}\u{24DB}\u{24DC}\u{24DD}\u{24DE}\u{24DF}\u{24E0}\u{24E1}\u{24E2}\u{24E3}\u{24E4}\u{24E5}\u{24E6}\u{24E7}\u{24E8}\u{24E9}\u{2C30}\u{2C31}\u{2C32}\u{2C33}\u{2C34}\u{2C35}\u{2C36}\u{2C37}\u{2C38}\u{2C39}\u{2C3A}\u{2C3B}\u{2C3C}\u{2C3D}\u{2C3E}\u{2C3F}\u{2C40}\u{2C41}\u{2C42}\u{2C43}\u{2C44}\u{2C45}\u{2C46}\u{2C47}\u{2C48}\u{2C49}\u{2C4A}\u{2C4B}\u{2C4C}\u{2C4D}\u{2C4E}\u{2C4F}\u{2C50}\u{2C51}\u{2C52}\u{2C53}\u{2C54}\u{2C55}\u{2C56}\u{2C57}\u{2C58}\u{2C59}\u{2C5A}\u{2C5B}\u{2C5C}\u{2C5D}\u{2C5E}\u{2C61}\u{2C65}\u{2C66}\u{2C68}\u{2C6A}\u{2C6C}\u{2C73}\u{2C76}\u{2C81}\u{2C83}\u{2C85}\u{2C87}\u{2C89}\u{2C8B}\u{2C8D}\u{2C8F}\u{2C91}\u{2C93}\u{2C95}\u{2C97}\u{2C99}\u{2C9B}\u{2C9D}\u{2C9F}\u{2CA1}\u{2CA3}\u{2CA5}\u{2CA7}\u{2CA9}\u{2CAB}\u{2CAD}\u{2CAF}\u{2CB1}\u{2CB3}\u{2CB5}\u{2CB7}\u{2CB9}\u{2CBB}\u{2CBD}\u{2CBF}\u{2CC1}\u{2CC3}\u{2CC5}\u{2CC7}\u{2CC9}\u{2CCB}\u{2CCD}\u{2CCF}\u{2CD1}\u{2CD3}\u{2CD5}\u{2CD7}\u{2CD9}\u{2CDB}\u{2CDD}\u{2CDF}\u{2CE1}\u{2CE3}\u{2CEC}\u{2CEE}\u{2CF3}\u{2D00}\u{2D01}\u{2D02}\u{2D03}\u{2D04}\u{2D05}\u{2D06}\u{2D07}\u{2D08}\u{2D09}\u{2D0A}\u{2D0B}\u{2D0C}\u{2D0D}\u{2D0E}\u{2D0F}\u{2D10}\u{2D11}\u{2D12}\u{2D13}\u{2D14}\u{2D15}\u{2D16}\u{2D17}\u{2D18}\u{2D19}\u{2D1A}\u{2D1B}\u{2D1C}\u{2D1D}\u{2D1E}\u{2D1F}\u{2D20}\u{2D21}\u{2D22}\u{2D23}\u{2D24}\u{2D25}\u{2D27}\u{2D2D}\u{A641}\u{A643}\u{A645}\u{A647}\u{A649}\u{A64B}\u{A64D}\u{A64F}\u{A651}\u{A653}\u{A655}\u{A657}\u{A659}\u{A65B}\u{A65D}\u{A65F}\u{A661}\u{A663}\u{A665}\u{A667}\u{A669}\u{A66B}\u{A66D}\u{A681}\u{A683}\u{A685}\u{A687}\u{A689}\u{A68B}\u{A68D}\u{A68F}\u{A691}\u{A693}\u{A695}\u{A697}\u{A699}\u{A69B}\u{A723}\u{A725}\u{A727}\u{A729}\u{A72B}\u{A72D}\u{A72F}\u{A733}\u{A735}\u{A737}\u{A739}\u{A73B}\u{A73D}\u{A73F}\u{A741}\u{A743}\u{A745}\u{A747}\u{A749}\u{A74B}\u{A74D}\u{A74F}\u{A751}\u{A753}\u{A755}\u{A757}\u{A759}\u{A75B}\u{A75D}\u{A75F}\u{A761}\u{A763}\u{A765}\u{A767}\u{A769}\u{A76B}\u{A76D}\u{A76F}\u{A77A}\u{A77C}\u{A77F}\u{A781}\u{A783}\u{A785}\u{A787}\u{A78C}\u{A791}\u{A793}\u{A797}\u{A799}\u{A79B}\u{A79D}\u{A79F}\u{A7A1}\u{A7A3}\u{A7A5}\u{A7A7}\u{A7A9}\u{A7B5}\u{A7B7}\u{AB53}\u{AB70}\u{AB71}\u{AB72}\u{AB73}\u{AB74}\u{AB75}\u{AB76}\u{AB77}\u{AB78}\u{AB79}\u{AB7A}\u{AB7B}\u{AB7C}\u{AB7D}\u{AB7E}\u{AB7F}\u{AB80}\u{AB81}\u{AB82}\u{AB83}\u{AB84}\u{AB85}\u{AB86}\u{AB87}\u{AB88}\u{AB89}\u{AB8A}\u{AB8B}\u{AB8C}\u{AB8D}\u{AB8E}\u{AB8F}\u{AB90}\u{AB91}\u{AB92}\u{AB93}\u{AB94}\u{AB95}\u{AB96}\u{AB97}\u{AB98}\u{AB99}\u{AB9A}\u{AB9B}\u{AB9C}\u{AB9D}\u{AB9E}\u{AB9F}\u{ABA0}\u{ABA1}\u{ABA2}\u{ABA3}\u{ABA4}\u{ABA5}\u{ABA6}\u{ABA7}\u{ABA8}\u{ABA9}\u{ABAA}\u{ABAB}\u{ABAC}\u{ABAD}\u{ABAE}\u{ABAF}\u{ABB0}\u{ABB1}\u{ABB2}\u{ABB3}\u{ABB4}\u{ABB5}\u{ABB6}\u{ABB7}\u{ABB8}\u{ABB9}\u{ABBA}\u{ABBB}\u{ABBC}\u{ABBD}\u{ABBE}\u{ABBF}\u{FF41}\u{FF42}\u{FF43}\u{FF44}\u{FF45}\u{FF46}\u{FF47}\u{FF48}\u{FF49}\u{FF4A}\u{FF4B}\u{FF4C}\u{FF4D}\u{FF4E}\u{FF4F}\u{FF50}\u{FF51}\u{FF52}\u{FF53}\u{FF54}\u{FF55}\u{FF56}\u{FF57}\u{FF58}\u{FF59}\u{FF5A}\u{10428}\u{10429}\u{1042A}\u{1042B}\u{1042C}\u{1042D}\u{1042E}\u{1042F}\u{10430}\u{10431}\u{10432}\u{10433}\u{10434}\u{10435}\u{10436}\u{10437}\u{10438}\u{10439}\u{1043A}\u{1043B}\u{1043C}\u{1043D}\u{1043E}\u{1043F}\u{10440}\u{10441}\u{10442}\u{10443}\u{10444}\u{10445}\u{10446}\u{10447}\u{10448}\u{10449}\u{1044A}\u{1044B}\u{1044C}\u{1044D}\u{1044E}\u{1044F}\u{10CC0}\u{10CC1}\u{10CC2}\u{10CC3}\u{10CC4}\u{10CC5}\u{10CC6}\u{10CC7}\u{10CC8}\u{10CC9}\u{10CCA}\u{10CCB}\u{10CCC}\u{10CCD}\u{10CCE}\u{10CCF}\u{10CD0}\u{10CD1}\u{10CD2}\u{10CD3}\u{10CD4}\u{10CD5}\u{10CD6}\u{10CD7}\u{10CD8}\u{10CD9}\u{10CDA}\u{10CDB}\u{10CDC}\u{10CDD}\u{10CDE}\u{10CDF}\u{10CE0}\u{10CE1}\u{10CE2}\u{10CE3}\u{10CE4}\u{10CE5}\u{10CE6}\u{10CE7}\u{10CE8}\u{10CE9}\u{10CEA}\u{10CEB}\u{10CEC}\u{10CED}\u{10CEE}\u{10CEF}\u{10CF0}\u{10CF1}\u{10CF2}\u{118C0}\u{118C1}\u{118C2}\u{118C3}\u{118C4}\u{118C5}\u{118C6}\u{118C7}\u{118C8}\u{118C9}\u{118CA}\u{118CB}\u{118CC}\u{118CD}\u{118CE}\u{118CF}\u{118D0}\u{118D1}\u{118D2}\u{118D3}\u{118D4}\u{118D5}\u{118D6}\u{118D7}\u{118D8}\u{118D9}\u{118DA}\u{118DB}\u{118DC}\u{118DD}\u{118DE}\u{118DF}\u{01C7}\u{01CA}\u{01F1}\u{037F}\u{03F4}\u{0528}\u{052A}\u{052C}\u{052E}\u{13A0}\u{13A1}\u{13A2}\u{13A3}\u{13A4}\u{13A5}\u{13A6}\u{13A7}\u{13A8}\u{13A9}\u{13AA}\u{13AB}\u{13AC}\u{13AD}\u{13AE}\u{13AF}\u{13B0}\u{13B1}\u{13B2}\u{13B3}\u{13B4}\u{13B5}\u{13B6}\u{13B7}\u{13B8}\u{13B9}\u{13BA}\u{13BB}\u{13BC}\u{13BD}\u{13BE}\u{13BF}\u{13C0}\u{13C1}\u{13C2}\u{13C3}\u{13C4}\u{13C5}\u{13C6}\u{13C7}\u{13C8}\u{13C9}\u{13CA}\u{13CB}\u{13CC}\u{13CD}\u{13CE}\u{13CF}\u{13D0}\u{13D1}\u{13D2}\u{13D3}\u{13D4}\u{13D5}\u{13D6}\u{13D7}\u{13D8}\u{13D9}\u{13DA}\u{13DB}\u{13DC}\u{13DD}\u{13DE}\u{13DF}\u{13E0}\u{13E1}\u{13E2}\u{13E3}\u{13E4}\u{13E5}\u{13E6}\u{13E7}\u{13E8}\u{13E9}\u{13EA}\u{13EB}\u{13EC}\u{13ED}\u{13EE}\u{13EF}\u{13F0}\u{13F1}\u{13F2}\u{13F3}\u{13F4}\u{13F5}\u{2126}".freeze
|
10
10
|
DOWNCASE_UPPERCASE_CHARACTERS = "\u{0041}\u{0042}\u{0043}\u{0044}\u{0045}\u{0046}\u{0047}\u{0048}\u{0049}\u{004A}\u{004B}\u{004C}\u{004D}\u{004E}\u{004F}\u{0050}\u{0051}\u{0052}\u{0053}\u{0054}\u{0055}\u{0056}\u{0057}\u{0058}\u{0059}\u{005A}\u{00C0}\u{00C1}\u{00C2}\u{00C3}\u{00C4}\u{00C5}\u{00C6}\u{00C7}\u{00C8}\u{00C9}\u{00CA}\u{00CB}\u{00CC}\u{00CD}\u{00CE}\u{00CF}\u{00D0}\u{00D1}\u{00D2}\u{00D3}\u{00D4}\u{00D5}\u{00D6}\u{00D8}\u{00D9}\u{00DA}\u{00DB}\u{00DC}\u{00DD}\u{00DE}\u{0178}\u{0100}\u{0102}\u{0104}\u{0106}\u{0108}\u{010A}\u{010C}\u{010E}\u{0110}\u{0112}\u{0114}\u{0116}\u{0118}\u{011A}\u{011C}\u{011E}\u{0120}\u{0122}\u{0124}\u{0126}\u{0128}\u{012A}\u{012C}\u{012E}\u{0132}\u{0134}\u{0136}\u{0139}\u{013B}\u{013D}\u{013F}\u{0141}\u{0143}\u{0145}\u{0147}\u{014A}\u{014C}\u{014E}\u{0150}\u{0152}\u{0154}\u{0156}\u{0158}\u{015A}\u{015C}\u{015E}\u{0160}\u{0162}\u{0164}\u{0166}\u{0168}\u{016A}\u{016C}\u{016E}\u{0170}\u{0172}\u{0174}\u{0176}\u{0179}\u{017B}\u{017D}\u{0243}\u{0182}\u{0184}\u{0187}\u{018B}\u{0191}\u{01F6}\u{0198}\u{023D}\u{0220}\u{01A0}\u{01A2}\u{01A4}\u{01A7}\u{01AC}\u{01AF}\u{01B3}\u{01B5}\u{01B8}\u{01BC}\u{01F7}\u{01C5}\u{01C8}\u{01CB}\u{01CD}\u{01CF}\u{01D1}\u{01D3}\u{01D5}\u{01D7}\u{01D9}\u{01DB}\u{018E}\u{01DE}\u{01E0}\u{01E2}\u{01E4}\u{01E6}\u{01E8}\u{01EA}\u{01EC}\u{01EE}\u{01F2}\u{01F4}\u{01F8}\u{01FA}\u{01FC}\u{01FE}\u{0200}\u{0202}\u{0204}\u{0206}\u{0208}\u{020A}\u{020C}\u{020E}\u{0210}\u{0212}\u{0214}\u{0216}\u{0218}\u{021A}\u{021C}\u{021E}\u{0222}\u{0224}\u{0226}\u{0228}\u{022A}\u{022C}\u{022E}\u{0230}\u{0232}\u{023B}\u{2C7E}\u{2C7F}\u{0241}\u{0246}\u{0248}\u{024A}\u{024C}\u{024E}\u{2C6F}\u{2C6D}\u{2C70}\u{0181}\u{0186}\u{0189}\u{018A}\u{018F}\u{0190}\u{A7AB}\u{0193}\u{A7AC}\u{0194}\u{A78D}\u{A7AA}\u{0197}\u{0196}\u{2C62}\u{A7AD}\u{019C}\u{2C6E}\u{019D}\u{019F}\u{2C64}\u{01A6}\u{01A9}\u{A7B1}\u{01AE}\u{0244}\u{01B1}\u{01B2}\u{0245}\u{01B7}\u{A7B2}\u{A7B0}\u{0370}\u{0372}\u{0376}\u{03FD}\u{03FE}\u{03FF}\u{0386}\u{0388}\u{0389}\u{038A}\u{0391}\u{0392}\u{0393}\u{0394}\u{0395}\u{0396}\u{0397}\u{0398}\u{0399}\u{039A}\u{039B}\u{039C}\u{039D}\u{039E}\u{039F}\u{03A0}\u{03A1}\u{03A3}\u{03A4}\u{03A5}\u{03A6}\u{03A7}\u{03A8}\u{03A9}\u{03AA}\u{03AB}\u{038C}\u{038E}\u{038F}\u{03CF}\u{03D8}\u{03DA}\u{03DC}\u{03DE}\u{03E0}\u{03E2}\u{03E4}\u{03E6}\u{03E8}\u{03EA}\u{03EC}\u{03EE}\u{03F9}\u{037F}\u{03F7}\u{03FA}\u{0410}\u{0411}\u{0412}\u{0413}\u{0414}\u{0415}\u{0416}\u{0417}\u{0418}\u{0419}\u{041A}\u{041B}\u{041C}\u{041D}\u{041E}\u{041F}\u{0420}\u{0421}\u{0422}\u{0423}\u{0424}\u{0425}\u{0426}\u{0427}\u{0428}\u{0429}\u{042A}\u{042B}\u{042C}\u{042D}\u{042E}\u{042F}\u{0400}\u{0401}\u{0402}\u{0403}\u{0404}\u{0405}\u{0406}\u{0407}\u{0408}\u{0409}\u{040A}\u{040B}\u{040C}\u{040D}\u{040E}\u{040F}\u{0460}\u{0462}\u{0464}\u{0466}\u{0468}\u{046A}\u{046C}\u{046E}\u{0470}\u{0472}\u{0474}\u{0476}\u{0478}\u{047A}\u{047C}\u{047E}\u{0480}\u{048A}\u{048C}\u{048E}\u{0490}\u{0492}\u{0494}\u{0496}\u{0498}\u{049A}\u{049C}\u{049E}\u{04A0}\u{04A2}\u{04A4}\u{04A6}\u{04A8}\u{04AA}\u{04AC}\u{04AE}\u{04B0}\u{04B2}\u{04B4}\u{04B6}\u{04B8}\u{04BA}\u{04BC}\u{04BE}\u{04C1}\u{04C3}\u{04C5}\u{04C7}\u{04C9}\u{04CB}\u{04CD}\u{04C0}\u{04D0}\u{04D2}\u{04D4}\u{04D6}\u{04D8}\u{04DA}\u{04DC}\u{04DE}\u{04E0}\u{04E2}\u{04E4}\u{04E6}\u{04E8}\u{04EA}\u{04EC}\u{04EE}\u{04F0}\u{04F2}\u{04F4}\u{04F6}\u{04F8}\u{04FA}\u{04FC}\u{04FE}\u{0500}\u{0502}\u{0504}\u{0506}\u{0508}\u{050A}\u{050C}\u{050E}\u{0510}\u{0512}\u{0514}\u{0516}\u{0518}\u{051A}\u{051C}\u{051E}\u{0520}\u{0522}\u{0524}\u{0526}\u{0528}\u{052A}\u{052C}\u{052E}\u{0531}\u{0532}\u{0533}\u{0534}\u{0535}\u{0536}\u{0537}\u{0538}\u{0539}\u{053A}\u{053B}\u{053C}\u{053D}\u{053E}\u{053F}\u{0540}\u{0541}\u{0542}\u{0543}\u{0544}\u{0545}\u{0546}\u{0547}\u{0548}\u{0549}\u{054A}\u{054B}\u{054C}\u{054D}\u{054E}\u{054F}\u{0550}\u{0551}\u{0552}\u{0553}\u{0554}\u{0555}\u{0556}\u{13F0}\u{13F1}\u{13F2}\u{13F3}\u{13F4}\u{13F5}\u{A77D}\u{2C63}\u{1E00}\u{1E02}\u{1E04}\u{1E06}\u{1E08}\u{1E0A}\u{1E0C}\u{1E0E}\u{1E10}\u{1E12}\u{1E14}\u{1E16}\u{1E18}\u{1E1A}\u{1E1C}\u{1E1E}\u{1E20}\u{1E22}\u{1E24}\u{1E26}\u{1E28}\u{1E2A}\u{1E2C}\u{1E2E}\u{1E30}\u{1E32}\u{1E34}\u{1E36}\u{1E38}\u{1E3A}\u{1E3C}\u{1E3E}\u{1E40}\u{1E42}\u{1E44}\u{1E46}\u{1E48}\u{1E4A}\u{1E4C}\u{1E4E}\u{1E50}\u{1E52}\u{1E54}\u{1E56}\u{1E58}\u{1E5A}\u{1E5C}\u{1E5E}\u{1E60}\u{1E62}\u{1E64}\u{1E66}\u{1E68}\u{1E6A}\u{1E6C}\u{1E6E}\u{1E70}\u{1E72}\u{1E74}\u{1E76}\u{1E78}\u{1E7A}\u{1E7C}\u{1E7E}\u{1E80}\u{1E82}\u{1E84}\u{1E86}\u{1E88}\u{1E8A}\u{1E8C}\u{1E8E}\u{1E90}\u{1E92}\u{1E94}\u{1EA0}\u{1EA2}\u{1EA4}\u{1EA6}\u{1EA8}\u{1EAA}\u{1EAC}\u{1EAE}\u{1EB0}\u{1EB2}\u{1EB4}\u{1EB6}\u{1EB8}\u{1EBA}\u{1EBC}\u{1EBE}\u{1EC0}\u{1EC2}\u{1EC4}\u{1EC6}\u{1EC8}\u{1ECA}\u{1ECC}\u{1ECE}\u{1ED0}\u{1ED2}\u{1ED4}\u{1ED6}\u{1ED8}\u{1EDA}\u{1EDC}\u{1EDE}\u{1EE0}\u{1EE2}\u{1EE4}\u{1EE6}\u{1EE8}\u{1EEA}\u{1EEC}\u{1EEE}\u{1EF0}\u{1EF2}\u{1EF4}\u{1EF6}\u{1EF8}\u{1EFA}\u{1EFC}\u{1EFE}\u{1F08}\u{1F09}\u{1F0A}\u{1F0B}\u{1F0C}\u{1F0D}\u{1F0E}\u{1F0F}\u{1F18}\u{1F19}\u{1F1A}\u{1F1B}\u{1F1C}\u{1F1D}\u{1F28}\u{1F29}\u{1F2A}\u{1F2B}\u{1F2C}\u{1F2D}\u{1F2E}\u{1F2F}\u{1F38}\u{1F39}\u{1F3A}\u{1F3B}\u{1F3C}\u{1F3D}\u{1F3E}\u{1F3F}\u{1F48}\u{1F49}\u{1F4A}\u{1F4B}\u{1F4C}\u{1F4D}\u{1F59}\u{1F5B}\u{1F5D}\u{1F5F}\u{1F68}\u{1F69}\u{1F6A}\u{1F6B}\u{1F6C}\u{1F6D}\u{1F6E}\u{1F6F}\u{1FBA}\u{1FBB}\u{1FC8}\u{1FC9}\u{1FCA}\u{1FCB}\u{1FDA}\u{1FDB}\u{1FF8}\u{1FF9}\u{1FEA}\u{1FEB}\u{1FFA}\u{1FFB}\u{1F88}\u{1F89}\u{1F8A}\u{1F8B}\u{1F8C}\u{1F8D}\u{1F8E}\u{1F8F}\u{1F98}\u{1F99}\u{1F9A}\u{1F9B}\u{1F9C}\u{1F9D}\u{1F9E}\u{1F9F}\u{1FA8}\u{1FA9}\u{1FAA}\u{1FAB}\u{1FAC}\u{1FAD}\u{1FAE}\u{1FAF}\u{1FB8}\u{1FB9}\u{1FBC}\u{1FCC}\u{1FD8}\u{1FD9}\u{1FE8}\u{1FE9}\u{1FEC}\u{1FFC}\u{2132}\u{2160}\u{2161}\u{2162}\u{2163}\u{2164}\u{2165}\u{2166}\u{2167}\u{2168}\u{2169}\u{216A}\u{216B}\u{216C}\u{216D}\u{216E}\u{216F}\u{2183}\u{24B6}\u{24B7}\u{24B8}\u{24B9}\u{24BA}\u{24BB}\u{24BC}\u{24BD}\u{24BE}\u{24BF}\u{24C0}\u{24C1}\u{24C2}\u{24C3}\u{24C4}\u{24C5}\u{24C6}\u{24C7}\u{24C8}\u{24C9}\u{24CA}\u{24CB}\u{24CC}\u{24CD}\u{24CE}\u{24CF}\u{2C00}\u{2C01}\u{2C02}\u{2C03}\u{2C04}\u{2C05}\u{2C06}\u{2C07}\u{2C08}\u{2C09}\u{2C0A}\u{2C0B}\u{2C0C}\u{2C0D}\u{2C0E}\u{2C0F}\u{2C10}\u{2C11}\u{2C12}\u{2C13}\u{2C14}\u{2C15}\u{2C16}\u{2C17}\u{2C18}\u{2C19}\u{2C1A}\u{2C1B}\u{2C1C}\u{2C1D}\u{2C1E}\u{2C1F}\u{2C20}\u{2C21}\u{2C22}\u{2C23}\u{2C24}\u{2C25}\u{2C26}\u{2C27}\u{2C28}\u{2C29}\u{2C2A}\u{2C2B}\u{2C2C}\u{2C2D}\u{2C2E}\u{2C60}\u{023A}\u{023E}\u{2C67}\u{2C69}\u{2C6B}\u{2C72}\u{2C75}\u{2C80}\u{2C82}\u{2C84}\u{2C86}\u{2C88}\u{2C8A}\u{2C8C}\u{2C8E}\u{2C90}\u{2C92}\u{2C94}\u{2C96}\u{2C98}\u{2C9A}\u{2C9C}\u{2C9E}\u{2CA0}\u{2CA2}\u{2CA4}\u{2CA6}\u{2CA8}\u{2CAA}\u{2CAC}\u{2CAE}\u{2CB0}\u{2CB2}\u{2CB4}\u{2CB6}\u{2CB8}\u{2CBA}\u{2CBC}\u{2CBE}\u{2CC0}\u{2CC2}\u{2CC4}\u{2CC6}\u{2CC8}\u{2CCA}\u{2CCC}\u{2CCE}\u{2CD0}\u{2CD2}\u{2CD4}\u{2CD6}\u{2CD8}\u{2CDA}\u{2CDC}\u{2CDE}\u{2CE0}\u{2CE2}\u{2CEB}\u{2CED}\u{2CF2}\u{10A0}\u{10A1}\u{10A2}\u{10A3}\u{10A4}\u{10A5}\u{10A6}\u{10A7}\u{10A8}\u{10A9}\u{10AA}\u{10AB}\u{10AC}\u{10AD}\u{10AE}\u{10AF}\u{10B0}\u{10B1}\u{10B2}\u{10B3}\u{10B4}\u{10B5}\u{10B6}\u{10B7}\u{10B8}\u{10B9}\u{10BA}\u{10BB}\u{10BC}\u{10BD}\u{10BE}\u{10BF}\u{10C0}\u{10C1}\u{10C2}\u{10C3}\u{10C4}\u{10C5}\u{10C7}\u{10CD}\u{A640}\u{A642}\u{A644}\u{A646}\u{A648}\u{A64A}\u{A64C}\u{A64E}\u{A650}\u{A652}\u{A654}\u{A656}\u{A658}\u{A65A}\u{A65C}\u{A65E}\u{A660}\u{A662}\u{A664}\u{A666}\u{A668}\u{A66A}\u{A66C}\u{A680}\u{A682}\u{A684}\u{A686}\u{A688}\u{A68A}\u{A68C}\u{A68E}\u{A690}\u{A692}\u{A694}\u{A696}\u{A698}\u{A69A}\u{A722}\u{A724}\u{A726}\u{A728}\u{A72A}\u{A72C}\u{A72E}\u{A732}\u{A734}\u{A736}\u{A738}\u{A73A}\u{A73C}\u{A73E}\u{A740}\u{A742}\u{A744}\u{A746}\u{A748}\u{A74A}\u{A74C}\u{A74E}\u{A750}\u{A752}\u{A754}\u{A756}\u{A758}\u{A75A}\u{A75C}\u{A75E}\u{A760}\u{A762}\u{A764}\u{A766}\u{A768}\u{A76A}\u{A76C}\u{A76E}\u{A779}\u{A77B}\u{A77E}\u{A780}\u{A782}\u{A784}\u{A786}\u{A78B}\u{A790}\u{A792}\u{A796}\u{A798}\u{A79A}\u{A79C}\u{A79E}\u{A7A0}\u{A7A2}\u{A7A4}\u{A7A6}\u{A7A8}\u{A7B4}\u{A7B6}\u{A7B3}\u{13A0}\u{13A1}\u{13A2}\u{13A3}\u{13A4}\u{13A5}\u{13A6}\u{13A7}\u{13A8}\u{13A9}\u{13AA}\u{13AB}\u{13AC}\u{13AD}\u{13AE}\u{13AF}\u{13B0}\u{13B1}\u{13B2}\u{13B3}\u{13B4}\u{13B5}\u{13B6}\u{13B7}\u{13B8}\u{13B9}\u{13BA}\u{13BB}\u{13BC}\u{13BD}\u{13BE}\u{13BF}\u{13C0}\u{13C1}\u{13C2}\u{13C3}\u{13C4}\u{13C5}\u{13C6}\u{13C7}\u{13C8}\u{13C9}\u{13CA}\u{13CB}\u{13CC}\u{13CD}\u{13CE}\u{13CF}\u{13D0}\u{13D1}\u{13D2}\u{13D3}\u{13D4}\u{13D5}\u{13D6}\u{13D7}\u{13D8}\u{13D9}\u{13DA}\u{13DB}\u{13DC}\u{13DD}\u{13DE}\u{13DF}\u{13E0}\u{13E1}\u{13E2}\u{13E3}\u{13E4}\u{13E5}\u{13E6}\u{13E7}\u{13E8}\u{13E9}\u{13EA}\u{13EB}\u{13EC}\u{13ED}\u{13EE}\u{13EF}\u{FF21}\u{FF22}\u{FF23}\u{FF24}\u{FF25}\u{FF26}\u{FF27}\u{FF28}\u{FF29}\u{FF2A}\u{FF2B}\u{FF2C}\u{FF2D}\u{FF2E}\u{FF2F}\u{FF30}\u{FF31}\u{FF32}\u{FF33}\u{FF34}\u{FF35}\u{FF36}\u{FF37}\u{FF38}\u{FF39}\u{FF3A}\u{10400}\u{10401}\u{10402}\u{10403}\u{10404}\u{10405}\u{10406}\u{10407}\u{10408}\u{10409}\u{1040A}\u{1040B}\u{1040C}\u{1040D}\u{1040E}\u{1040F}\u{10410}\u{10411}\u{10412}\u{10413}\u{10414}\u{10415}\u{10416}\u{10417}\u{10418}\u{10419}\u{1041A}\u{1041B}\u{1041C}\u{1041D}\u{1041E}\u{1041F}\u{10420}\u{10421}\u{10422}\u{10423}\u{10424}\u{10425}\u{10426}\u{10427}\u{10C80}\u{10C81}\u{10C82}\u{10C83}\u{10C84}\u{10C85}\u{10C86}\u{10C87}\u{10C88}\u{10C89}\u{10C8A}\u{10C8B}\u{10C8C}\u{10C8D}\u{10C8E}\u{10C8F}\u{10C90}\u{10C91}\u{10C92}\u{10C93}\u{10C94}\u{10C95}\u{10C96}\u{10C97}\u{10C98}\u{10C99}\u{10C9A}\u{10C9B}\u{10C9C}\u{10C9D}\u{10C9E}\u{10C9F}\u{10CA0}\u{10CA1}\u{10CA2}\u{10CA3}\u{10CA4}\u{10CA5}\u{10CA6}\u{10CA7}\u{10CA8}\u{10CA9}\u{10CAA}\u{10CAB}\u{10CAC}\u{10CAD}\u{10CAE}\u{10CAF}\u{10CB0}\u{10CB1}\u{10CB2}\u{118A0}\u{118A1}\u{118A2}\u{118A3}\u{118A4}\u{118A5}\u{118A6}\u{118A7}\u{118A8}\u{118A9}\u{118AA}\u{118AB}\u{118AC}\u{118AD}\u{118AE}\u{118AF}\u{118B0}\u{118B1}\u{118B2}\u{118B3}\u{118B4}\u{118B5}\u{118B6}\u{118B7}\u{118B8}\u{118B9}\u{118BA}\u{118BB}\u{118BC}\u{118BD}\u{118BE}\u{118BF}\u{01C9}\u{01CC}\u{01F3}\u{037F}\u{03B8}\u{0528}\u{052A}\u{052C}\u{052E}\u{13A0}\u{13A1}\u{13A2}\u{13A3}\u{13A4}\u{13A5}\u{13A6}\u{13A7}\u{13A8}\u{13A9}\u{13AA}\u{13AB}\u{13AC}\u{13AD}\u{13AE}\u{13AF}\u{13B0}\u{13B1}\u{13B2}\u{13B3}\u{13B4}\u{13B5}\u{13B6}\u{13B7}\u{13B8}\u{13B9}\u{13BA}\u{13BB}\u{13BC}\u{13BD}\u{13BE}\u{13BF}\u{13C0}\u{13C1}\u{13C2}\u{13C3}\u{13C4}\u{13C5}\u{13C6}\u{13C7}\u{13C8}\u{13C9}\u{13CA}\u{13CB}\u{13CC}\u{13CD}\u{13CE}\u{13CF}\u{13D0}\u{13D1}\u{13D2}\u{13D3}\u{13D4}\u{13D5}\u{13D6}\u{13D7}\u{13D8}\u{13D9}\u{13DA}\u{13DB}\u{13DC}\u{13DD}\u{13DE}\u{13DF}\u{13E0}\u{13E1}\u{13E2}\u{13E3}\u{13E4}\u{13E5}\u{13E6}\u{13E7}\u{13E8}\u{13E9}\u{13EA}\u{13EB}\u{13EC}\u{13ED}\u{13EE}\u{13EF}\u{13F0}\u{13F1}\u{13F2}\u{13F3}\u{13F4}\u{13F5}\u{03C9}".freeze
|
11
|
+
UPCASE_REPLACEMENTS_PRE = /[\u{00DF}\u{0390}\u{03B0}\u{1F52}\u{1F54}\u{1F56}\u{1FB7}\u{1FC7}\u{1FD2}\u{1FD3}\u{1FD7}\u{1FE2}\u{1FE3}\u{1FE7}\u{1FF7}]/.freeze
|
12
|
+
UPCASE_REPLACEMENT_HASH_PRE = {
|
13
|
+
"\u{00DF}" => "\u{0053}\u{0053}",
|
14
|
+
"\u{0390}" => "\u{0399}\u{0308}\u{0301}",
|
15
|
+
"\u{03B0}" => "\u{03A5}\u{0308}\u{0301}",
|
16
|
+
"\u{1F52}" => "\u{03A5}\u{0313}\u{0300}",
|
17
|
+
"\u{1F54}" => "\u{03A5}\u{0313}\u{0301}",
|
18
|
+
"\u{1F56}" => "\u{03A5}\u{0313}\u{0342}",
|
19
|
+
"\u{1FB7}" => "\u{0391}\u{0342}\u{0399}",
|
20
|
+
"\u{1FC7}" => "\u{0397}\u{0342}\u{0399}",
|
21
|
+
"\u{1FD2}" => "\u{0399}\u{0308}\u{0300}",
|
22
|
+
"\u{1FD3}" => "\u{0399}\u{0308}\u{0301}",
|
23
|
+
"\u{1FD7}" => "\u{0399}\u{0308}\u{0342}",
|
24
|
+
"\u{1FE2}" => "\u{03A5}\u{0308}\u{0300}",
|
25
|
+
"\u{1FE3}" => "\u{03A5}\u{0308}\u{0301}",
|
26
|
+
"\u{1FE7}" => "\u{03A5}\u{0308}\u{0342}",
|
27
|
+
"\u{1FF7}" => "\u{03A9}\u{0342}\u{0399}"
|
28
|
+
}.freeze
|
29
|
+
UPCASE_REPLACEMENTS_POST = /[\u{0149}\u{01F0}\u{0390}\u{03B0}\u{0587}\u{1E96}\u{1E97}\u{1E98}\u{1E99}\u{1E9A}\u{1F50}\u{1F52}\u{1F54}\u{1F56}\u{1F80}\u{1F81}\u{1F82}\u{1F83}\u{1F84}\u{1F85}\u{1F86}\u{1F87}\u{1F88}\u{1F89}\u{1F8A}\u{1F8B}\u{1F8C}\u{1F8D}\u{1F8E}\u{1F8F}\u{1F90}\u{1F91}\u{1F92}\u{1F93}\u{1F94}\u{1F95}\u{1F96}\u{1F97}\u{1F98}\u{1F99}\u{1F9A}\u{1F9B}\u{1F9C}\u{1F9D}\u{1F9E}\u{1F9F}\u{1FA0}\u{1FA1}\u{1FA2}\u{1FA3}\u{1FA4}\u{1FA5}\u{1FA6}\u{1FA7}\u{1FA8}\u{1FA9}\u{1FAA}\u{1FAB}\u{1FAC}\u{1FAD}\u{1FAE}\u{1FAF}\u{1FB2}\u{1FB3}\u{1FB4}\u{1FB6}\u{1FB7}\u{1FBC}\u{1FC2}\u{1FC3}\u{1FC4}\u{1FC6}\u{1FC7}\u{1FCC}\u{1FD2}\u{1FD3}\u{1FD6}\u{1FD7}\u{1FE2}\u{1FE3}\u{1FE4}\u{1FE6}\u{1FE7}\u{1FF2}\u{1FF3}\u{1FF4}\u{1FF6}\u{1FF7}\u{1FFC}]/.freeze
|
30
|
+
UPCASE_REPLACEMENT_HASH_POST = {
|
31
|
+
"\u{0149}" => "\u{02BC}\u{004E}",
|
32
|
+
"\u{01F0}" => "\u{004A}\u{030C}",
|
33
|
+
"\u{0390}" => "\u{0399}\u{0308}",
|
34
|
+
"\u{03B0}" => "\u{03A5}\u{0308}",
|
35
|
+
"\u{0587}" => "\u{0535}\u{0552}",
|
36
|
+
"\u{1E96}" => "\u{0048}\u{0331}",
|
37
|
+
"\u{1E97}" => "\u{0054}\u{0308}",
|
38
|
+
"\u{1E98}" => "\u{0057}\u{030A}",
|
39
|
+
"\u{1E99}" => "\u{0059}\u{030A}",
|
40
|
+
"\u{1E9A}" => "\u{0041}\u{02BE}",
|
41
|
+
"\u{1F50}" => "\u{03A5}\u{0313}",
|
42
|
+
"\u{1F52}" => "\u{03A5}\u{0313}",
|
43
|
+
"\u{1F54}" => "\u{03A5}\u{0313}",
|
44
|
+
"\u{1F56}" => "\u{03A5}\u{0313}",
|
45
|
+
"\u{1F80}" => "\u{1F08}\u{0399}",
|
46
|
+
"\u{1F81}" => "\u{1F09}\u{0399}",
|
47
|
+
"\u{1F82}" => "\u{1F0A}\u{0399}",
|
48
|
+
"\u{1F83}" => "\u{1F0B}\u{0399}",
|
49
|
+
"\u{1F84}" => "\u{1F0C}\u{0399}",
|
50
|
+
"\u{1F85}" => "\u{1F0D}\u{0399}",
|
51
|
+
"\u{1F86}" => "\u{1F0E}\u{0399}",
|
52
|
+
"\u{1F87}" => "\u{1F0F}\u{0399}",
|
53
|
+
"\u{1F88}" => "\u{1F08}\u{0399}",
|
54
|
+
"\u{1F89}" => "\u{1F09}\u{0399}",
|
55
|
+
"\u{1F8A}" => "\u{1F0A}\u{0399}",
|
56
|
+
"\u{1F8B}" => "\u{1F0B}\u{0399}",
|
57
|
+
"\u{1F8C}" => "\u{1F0C}\u{0399}",
|
58
|
+
"\u{1F8D}" => "\u{1F0D}\u{0399}",
|
59
|
+
"\u{1F8E}" => "\u{1F0E}\u{0399}",
|
60
|
+
"\u{1F8F}" => "\u{1F0F}\u{0399}",
|
61
|
+
"\u{1F90}" => "\u{1F28}\u{0399}",
|
62
|
+
"\u{1F91}" => "\u{1F29}\u{0399}",
|
63
|
+
"\u{1F92}" => "\u{1F2A}\u{0399}",
|
64
|
+
"\u{1F93}" => "\u{1F2B}\u{0399}",
|
65
|
+
"\u{1F94}" => "\u{1F2C}\u{0399}",
|
66
|
+
"\u{1F95}" => "\u{1F2D}\u{0399}",
|
67
|
+
"\u{1F96}" => "\u{1F2E}\u{0399}",
|
68
|
+
"\u{1F97}" => "\u{1F2F}\u{0399}",
|
69
|
+
"\u{1F98}" => "\u{1F28}\u{0399}",
|
70
|
+
"\u{1F99}" => "\u{1F29}\u{0399}",
|
71
|
+
"\u{1F9A}" => "\u{1F2A}\u{0399}",
|
72
|
+
"\u{1F9B}" => "\u{1F2B}\u{0399}",
|
73
|
+
"\u{1F9C}" => "\u{1F2C}\u{0399}",
|
74
|
+
"\u{1F9D}" => "\u{1F2D}\u{0399}",
|
75
|
+
"\u{1F9E}" => "\u{1F2E}\u{0399}",
|
76
|
+
"\u{1F9F}" => "\u{1F2F}\u{0399}",
|
77
|
+
"\u{1FA0}" => "\u{1F68}\u{0399}",
|
78
|
+
"\u{1FA1}" => "\u{1F69}\u{0399}",
|
79
|
+
"\u{1FA2}" => "\u{1F6A}\u{0399}",
|
80
|
+
"\u{1FA3}" => "\u{1F6B}\u{0399}",
|
81
|
+
"\u{1FA4}" => "\u{1F6C}\u{0399}",
|
82
|
+
"\u{1FA5}" => "\u{1F6D}\u{0399}",
|
83
|
+
"\u{1FA6}" => "\u{1F6E}\u{0399}",
|
84
|
+
"\u{1FA7}" => "\u{1F6F}\u{0399}",
|
85
|
+
"\u{1FA8}" => "\u{1F68}\u{0399}",
|
86
|
+
"\u{1FA9}" => "\u{1F69}\u{0399}",
|
87
|
+
"\u{1FAA}" => "\u{1F6A}\u{0399}",
|
88
|
+
"\u{1FAB}" => "\u{1F6B}\u{0399}",
|
89
|
+
"\u{1FAC}" => "\u{1F6C}\u{0399}",
|
90
|
+
"\u{1FAD}" => "\u{1F6D}\u{0399}",
|
91
|
+
"\u{1FAE}" => "\u{1F6E}\u{0399}",
|
92
|
+
"\u{1FAF}" => "\u{1F6F}\u{0399}",
|
93
|
+
"\u{1FB2}" => "\u{1FBA}\u{0399}",
|
94
|
+
"\u{1FB3}" => "\u{0391}\u{0399}",
|
95
|
+
"\u{1FB4}" => "\u{0386}\u{0399}",
|
96
|
+
"\u{1FB6}" => "\u{0391}\u{0342}",
|
97
|
+
"\u{1FB7}" => "\u{0391}\u{0342}",
|
98
|
+
"\u{1FBC}" => "\u{0391}\u{0399}",
|
99
|
+
"\u{1FC2}" => "\u{1FCA}\u{0399}",
|
100
|
+
"\u{1FC3}" => "\u{0397}\u{0399}",
|
101
|
+
"\u{1FC4}" => "\u{0389}\u{0399}",
|
102
|
+
"\u{1FC6}" => "\u{0397}\u{0342}",
|
103
|
+
"\u{1FC7}" => "\u{0397}\u{0342}",
|
104
|
+
"\u{1FCC}" => "\u{0397}\u{0399}",
|
105
|
+
"\u{1FD2}" => "\u{0399}\u{0308}",
|
106
|
+
"\u{1FD3}" => "\u{0399}\u{0308}",
|
107
|
+
"\u{1FD6}" => "\u{0399}\u{0342}",
|
108
|
+
"\u{1FD7}" => "\u{0399}\u{0308}",
|
109
|
+
"\u{1FE2}" => "\u{03A5}\u{0308}",
|
110
|
+
"\u{1FE3}" => "\u{03A5}\u{0308}",
|
111
|
+
"\u{1FE4}" => "\u{03A1}\u{0313}",
|
112
|
+
"\u{1FE6}" => "\u{03A5}\u{0342}",
|
113
|
+
"\u{1FE7}" => "\u{03A5}\u{0308}",
|
114
|
+
"\u{1FF2}" => "\u{1FFA}\u{0399}",
|
115
|
+
"\u{1FF3}" => "\u{03A9}\u{0399}",
|
116
|
+
"\u{1FF4}" => "\u{038F}\u{0399}",
|
117
|
+
"\u{1FF6}" => "\u{03A9}\u{0342}",
|
118
|
+
"\u{1FF7}" => "\u{03A9}\u{0342}",
|
119
|
+
"\u{1FFC}" => "\u{03A9}\u{0399}"
|
120
|
+
}.freeze
|
121
|
+
DOWNCASE_REPLACEMENT_PRE_A = /\u{0130}/.freeze
|
122
|
+
DOWNCASE_REPLACEMENT_PRE_B = "\u{0069}\u{0307}".freeze
|
123
|
+
DOWNCASE_REPLACEMENTS_POST = /[\u{212B}\u{0130}\u{01C4}\u{01C7}\u{01C9}\u{01CA}\u{01CC}\u{01F1}\u{01F3}\u{03B8}\u{03C9}\u{03F4}\u{1E9E}\u{2126}\u{212A}]/.freeze
|
124
|
+
DOWNCASE_REPLACEMENT_HASH_POST = {
|
125
|
+
"\u{212B}" => "\u{00E5}",
|
126
|
+
"\u{0130}" => "\u{0069}",
|
127
|
+
"\u{01C4}" => "\u{01C6}",
|
128
|
+
"\u{01C7}" => "\u{01C9}",
|
129
|
+
"\u{01C9}" => "\u{01C9}",
|
130
|
+
"\u{01CA}" => "\u{01CC}",
|
131
|
+
"\u{01CC}" => "\u{01CC}",
|
132
|
+
"\u{01F1}" => "\u{01F3}",
|
133
|
+
"\u{01F3}" => "\u{01F3}",
|
134
|
+
"\u{03B8}" => "\u{03B8}",
|
135
|
+
"\u{03C9}" => "\u{03C9}",
|
136
|
+
"\u{03F4}" => "\u{03B8}",
|
137
|
+
"\u{1E9E}" => "\u{00DF}",
|
138
|
+
"\u{2126}" => "\u{03C9}",
|
139
|
+
"\u{212A}" => "\u{006B}"
|
140
|
+
}.freeze
|
141
|
+
|
11
142
|
def initialize(text)
|
12
143
|
@text = text
|
13
144
|
raise "In Unicode Case Converter text must be a String" unless text.class == String
|
14
145
|
end
|
15
146
|
|
16
147
|
def upcase
|
17
|
-
text.gsub(
|
18
|
-
.gsub(/\u{0390}/, "\u{0399}\u{0308}\u{0301}")
|
19
|
-
.gsub(/\u{03B0}/, "\u{03A5}\u{0308}\u{0301}")
|
20
|
-
.gsub(/\u{1F52}/, "\u{03A5}\u{0313}\u{0300}")
|
21
|
-
.gsub(/\u{1F54}/, "\u{03A5}\u{0313}\u{0301}")
|
22
|
-
.gsub(/\u{1F56}/, "\u{03A5}\u{0313}\u{0342}")
|
23
|
-
.gsub(/\u{1FB7}/, "\u{0391}\u{0342}\u{0399}")
|
24
|
-
.gsub(/\u{1FC7}/, "\u{0397}\u{0342}\u{0399}")
|
25
|
-
.gsub(/\u{1FD2}/, "\u{0399}\u{0308}\u{0300}")
|
26
|
-
.gsub(/\u{1FD3}/, "\u{0399}\u{0308}\u{0301}")
|
27
|
-
.gsub(/\u{1FD7}/, "\u{0399}\u{0308}\u{0342}")
|
28
|
-
.gsub(/\u{1FE2}/, "\u{03A5}\u{0308}\u{0300}")
|
29
|
-
.gsub(/\u{1FE3}/, "\u{03A5}\u{0308}\u{0301}")
|
30
|
-
.gsub(/\u{1FE7}/, "\u{03A5}\u{0308}\u{0342}")
|
31
|
-
.gsub(/\u{1FF7}/, "\u{03A9}\u{0342}\u{0399}")
|
148
|
+
text.gsub(UPCASE_REPLACEMENTS_PRE, UPCASE_REPLACEMENT_HASH_PRE)
|
32
149
|
.tr(UPCASE_LOWERCASE_CHARACTERS, UPCASE_UPPERCASE_CHARACTERS)
|
33
|
-
.gsub(
|
34
|
-
.gsub(/\u{01F0}/, "\u{004A}\u{030C}")
|
35
|
-
.gsub(/\u{0390}/, "\u{0399}\u{0308}")
|
36
|
-
.gsub(/\u{03B0}/, "\u{03A5}\u{0308}")
|
37
|
-
.gsub(/\u{0587}/, "\u{0535}\u{0552}")
|
38
|
-
.gsub(/\u{1E96}/, "\u{0048}\u{0331}")
|
39
|
-
.gsub(/\u{1E97}/, "\u{0054}\u{0308}")
|
40
|
-
.gsub(/\u{1E98}/, "\u{0057}\u{030A}")
|
41
|
-
.gsub(/\u{1E99}/, "\u{0059}\u{030A}")
|
42
|
-
.gsub(/\u{1E9A}/, "\u{0041}\u{02BE}")
|
43
|
-
.gsub(/\u{1F50}/, "\u{03A5}\u{0313}")
|
44
|
-
.gsub(/\u{1F52}/, "\u{03A5}\u{0313}")
|
45
|
-
.gsub(/\u{1F54}/, "\u{03A5}\u{0313}")
|
46
|
-
.gsub(/\u{1F56}/, "\u{03A5}\u{0313}")
|
47
|
-
.gsub(/\u{1F80}/, "\u{1F08}\u{0399}")
|
48
|
-
.gsub(/\u{1F81}/, "\u{1F09}\u{0399}")
|
49
|
-
.gsub(/\u{1F82}/, "\u{1F0A}\u{0399}")
|
50
|
-
.gsub(/\u{1F83}/, "\u{1F0B}\u{0399}")
|
51
|
-
.gsub(/\u{1F84}/, "\u{1F0C}\u{0399}")
|
52
|
-
.gsub(/\u{1F85}/, "\u{1F0D}\u{0399}")
|
53
|
-
.gsub(/\u{1F86}/, "\u{1F0E}\u{0399}")
|
54
|
-
.gsub(/\u{1F87}/, "\u{1F0F}\u{0399}")
|
55
|
-
.gsub(/\u{1F88}/, "\u{1F08}\u{0399}")
|
56
|
-
.gsub(/\u{1F89}/, "\u{1F09}\u{0399}")
|
57
|
-
.gsub(/\u{1F8A}/, "\u{1F0A}\u{0399}")
|
58
|
-
.gsub(/\u{1F8B}/, "\u{1F0B}\u{0399}")
|
59
|
-
.gsub(/\u{1F8C}/, "\u{1F0C}\u{0399}")
|
60
|
-
.gsub(/\u{1F8D}/, "\u{1F0D}\u{0399}")
|
61
|
-
.gsub(/\u{1F8E}/, "\u{1F0E}\u{0399}")
|
62
|
-
.gsub(/\u{1F8F}/, "\u{1F0F}\u{0399}")
|
63
|
-
.gsub(/\u{1F90}/, "\u{1F28}\u{0399}")
|
64
|
-
.gsub(/\u{1F91}/, "\u{1F29}\u{0399}")
|
65
|
-
.gsub(/\u{1F92}/, "\u{1F2A}\u{0399}")
|
66
|
-
.gsub(/\u{1F93}/, "\u{1F2B}\u{0399}")
|
67
|
-
.gsub(/\u{1F94}/, "\u{1F2C}\u{0399}")
|
68
|
-
.gsub(/\u{1F95}/, "\u{1F2D}\u{0399}")
|
69
|
-
.gsub(/\u{1F96}/, "\u{1F2E}\u{0399}")
|
70
|
-
.gsub(/\u{1F97}/, "\u{1F2F}\u{0399}")
|
71
|
-
.gsub(/\u{1F98}/, "\u{1F28}\u{0399}")
|
72
|
-
.gsub(/\u{1F99}/, "\u{1F29}\u{0399}")
|
73
|
-
.gsub(/\u{1F9A}/, "\u{1F2A}\u{0399}")
|
74
|
-
.gsub(/\u{1F9B}/, "\u{1F2B}\u{0399}")
|
75
|
-
.gsub(/\u{1F9C}/, "\u{1F2C}\u{0399}")
|
76
|
-
.gsub(/\u{1F9D}/, "\u{1F2D}\u{0399}")
|
77
|
-
.gsub(/\u{1F9E}/, "\u{1F2E}\u{0399}")
|
78
|
-
.gsub(/\u{1F9F}/, "\u{1F2F}\u{0399}")
|
79
|
-
.gsub(/\u{1FA0}/, "\u{1F68}\u{0399}")
|
80
|
-
.gsub(/\u{1FA1}/, "\u{1F69}\u{0399}")
|
81
|
-
.gsub(/\u{1FA2}/, "\u{1F6A}\u{0399}")
|
82
|
-
.gsub(/\u{1FA3}/, "\u{1F6B}\u{0399}")
|
83
|
-
.gsub(/\u{1FA4}/, "\u{1F6C}\u{0399}")
|
84
|
-
.gsub(/\u{1FA5}/, "\u{1F6D}\u{0399}")
|
85
|
-
.gsub(/\u{1FA6}/, "\u{1F6E}\u{0399}")
|
86
|
-
.gsub(/\u{1FA7}/, "\u{1F6F}\u{0399}")
|
87
|
-
.gsub(/\u{1FA8}/, "\u{1F68}\u{0399}")
|
88
|
-
.gsub(/\u{1FA9}/, "\u{1F69}\u{0399}")
|
89
|
-
.gsub(/\u{1FAA}/, "\u{1F6A}\u{0399}")
|
90
|
-
.gsub(/\u{1FAB}/, "\u{1F6B}\u{0399}")
|
91
|
-
.gsub(/\u{1FAC}/, "\u{1F6C}\u{0399}")
|
92
|
-
.gsub(/\u{1FAD}/, "\u{1F6D}\u{0399}")
|
93
|
-
.gsub(/\u{1FAE}/, "\u{1F6E}\u{0399}")
|
94
|
-
.gsub(/\u{1FAF}/, "\u{1F6F}\u{0399}")
|
95
|
-
.gsub(/\u{1FB2}/, "\u{1FBA}\u{0399}")
|
96
|
-
.gsub(/\u{1FB3}/, "\u{0391}\u{0399}")
|
97
|
-
.gsub(/\u{1FB4}/, "\u{0386}\u{0399}")
|
98
|
-
.gsub(/\u{1FB6}/, "\u{0391}\u{0342}")
|
99
|
-
.gsub(/\u{1FB7}/, "\u{0391}\u{0342}")
|
100
|
-
.gsub(/\u{1FBC}/, "\u{0391}\u{0399}")
|
101
|
-
.gsub(/\u{1FC2}/, "\u{1FCA}\u{0399}")
|
102
|
-
.gsub(/\u{1FC3}/, "\u{0397}\u{0399}")
|
103
|
-
.gsub(/\u{1FC4}/, "\u{0389}\u{0399}")
|
104
|
-
.gsub(/\u{1FC6}/, "\u{0397}\u{0342}")
|
105
|
-
.gsub(/\u{1FC7}/, "\u{0397}\u{0342}")
|
106
|
-
.gsub(/\u{1FCC}/, "\u{0397}\u{0399}")
|
107
|
-
.gsub(/\u{1FD2}/, "\u{0399}\u{0308}")
|
108
|
-
.gsub(/\u{1FD3}/, "\u{0399}\u{0308}")
|
109
|
-
.gsub(/\u{1FD6}/, "\u{0399}\u{0342}")
|
110
|
-
.gsub(/\u{1FD7}/, "\u{0399}\u{0308}")
|
111
|
-
.gsub(/\u{1FE2}/, "\u{03A5}\u{0308}")
|
112
|
-
.gsub(/\u{1FE3}/, "\u{03A5}\u{0308}")
|
113
|
-
.gsub(/\u{1FE4}/, "\u{03A1}\u{0313}")
|
114
|
-
.gsub(/\u{1FE6}/, "\u{03A5}\u{0342}")
|
115
|
-
.gsub(/\u{1FE7}/, "\u{03A5}\u{0308}")
|
116
|
-
.gsub(/\u{1FF2}/, "\u{1FFA}\u{0399}")
|
117
|
-
.gsub(/\u{1FF3}/, "\u{03A9}\u{0399}")
|
118
|
-
.gsub(/\u{1FF4}/, "\u{038F}\u{0399}")
|
119
|
-
.gsub(/\u{1FF6}/, "\u{03A9}\u{0342}")
|
120
|
-
.gsub(/\u{1FF7}/, "\u{03A9}\u{0342}")
|
121
|
-
.gsub(/\u{1FFC}/, "\u{03A9}\u{0399}")
|
150
|
+
.gsub(UPCASE_REPLACEMENTS_POST, UPCASE_REPLACEMENT_HASH_POST)
|
122
151
|
end
|
123
152
|
|
124
153
|
def downcase
|
125
|
-
text.gsub(
|
126
|
-
.
|
127
|
-
.gsub(
|
128
|
-
.gsub(/\u{01C4}/, "\u{01C6}")
|
129
|
-
.gsub(/\u{01C7}/, "\u{01C9}")
|
130
|
-
.gsub(/\u{01C9}/, "\u{01C9}")
|
131
|
-
.gsub(/\u{01CA}/, "\u{01CC}")
|
132
|
-
.gsub(/\u{01CC}/, "\u{01CC}")
|
133
|
-
.gsub(/\u{01F1}/, "\u{01F3}")
|
134
|
-
.gsub(/\u{01F3}/, "\u{01F3}")
|
135
|
-
.gsub(/\u{03B8}/, "\u{03B8}")
|
136
|
-
.gsub(/\u{03C9}/, "\u{03C9}")
|
137
|
-
.gsub(/\u{03F4}/, "\u{03B8}")
|
138
|
-
.gsub(/\u{1E9E}/, "\u{00DF}")
|
139
|
-
.gsub(/\u{2126}/, "\u{03C9}")
|
140
|
-
.gsub(/\u{212A}/, "\u{006B}")
|
154
|
+
text.gsub(DOWNCASE_REPLACEMENT_PRE_A, DOWNCASE_REPLACEMENT_PRE_B)
|
155
|
+
.tr(DOWNCASE_UPPERCASE_CHARACTERS, DOWNCASE_LOWERCASE_CHARACTERS)
|
156
|
+
.gsub(DOWNCASE_REPLACEMENTS_POST, DOWNCASE_REPLACEMENT_HASH_POST)
|
141
157
|
end
|
142
158
|
|
143
159
|
def capitalize
|
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'unicode'
|
3
3
|
require 'benchmark'
|
4
|
+
require 'stackprof'
|
5
|
+
require 'active_support/all'
|
4
6
|
|
5
7
|
describe UnicodeCaseConverter do
|
6
8
|
it 'has a version number' do
|
@@ -41,6 +43,38 @@ describe UnicodeCaseConverter do
|
|
41
43
|
expect(ucc.capitalize).to eq(unicode_result)
|
42
44
|
end
|
43
45
|
|
46
|
+
# (0..3).each do |first_digit|
|
47
|
+
# [*'0'..'9', *'A'..'F'].sample(16).sort.each do |second_digit|
|
48
|
+
# [*'0'..'9', *'A'..'F'].sample(16).sort.each do |third_digit|
|
49
|
+
# [*'0'..'9', *'A'..'F'].sample(16).sort.each do |forth_digit|
|
50
|
+
# string = "\\u" + first_digit.to_s + second_digit.to_s + third_digit.to_s + forth_digit.to_s
|
51
|
+
# text = string.gsub(/\\u([\da-fA-F]{4})/) {|m| [$1].pack("H*").unpack("n*").pack("U*")}.freeze
|
52
|
+
# it "upcases a string: #{text}" do
|
53
|
+
# unicode_result = Unicode.upcase(text.dup)
|
54
|
+
# ucc = text.dup.mb_chars.upcase.to_s
|
55
|
+
# expect(ucc).to eq(unicode_result)
|
56
|
+
# end
|
57
|
+
# end
|
58
|
+
# end
|
59
|
+
# end
|
60
|
+
# end
|
61
|
+
|
62
|
+
# (0..3).each do |first_digit|
|
63
|
+
# [*'0'..'9', *'A'..'F'].sample(16).sort.each do |second_digit|
|
64
|
+
# [*'0'..'9', *'A'..'F'].sample(16).sort.each do |third_digit|
|
65
|
+
# [*'0'..'9', *'A'..'F'].sample(16).sort.each do |forth_digit|
|
66
|
+
# string = "\\u" + first_digit.to_s + second_digit.to_s + third_digit.to_s + forth_digit.to_s
|
67
|
+
# text = string.gsub(/\\u([\da-fA-F]{4})/) {|m| [$1].pack("H*").unpack("n*").pack("U*")}
|
68
|
+
# it "downcases a string: #{text}" do
|
69
|
+
# unicode_result = Unicode.downcase(text)
|
70
|
+
# ucc = text.dup.mb_chars.downcase.to_s
|
71
|
+
# expect(ucc).to eq(unicode_result)
|
72
|
+
# end
|
73
|
+
# end
|
74
|
+
# end
|
75
|
+
# end
|
76
|
+
# end
|
77
|
+
|
44
78
|
(0..3).each do |first_digit|
|
45
79
|
[*'0'..'9', *'A'..'F'].sample(16).sort.each do |second_digit|
|
46
80
|
[*'0'..'9', *'A'..'F'].sample(16).sort.each do |third_digit|
|
@@ -49,8 +83,8 @@ describe UnicodeCaseConverter do
|
|
49
83
|
text = string.gsub(/\\u([\da-fA-F]{4})/) {|m| [$1].pack("H*").unpack("n*").pack("U*")}.freeze
|
50
84
|
it "upcases a string: #{text}" do
|
51
85
|
unicode_result = Unicode.upcase(text.dup)
|
52
|
-
ucc = UnicodeCaseConverter::Converter.new(text.dup)
|
53
|
-
expect(ucc
|
86
|
+
ucc = UnicodeCaseConverter::Converter.new(text.dup).upcase
|
87
|
+
expect(ucc).to eq(unicode_result)
|
54
88
|
end
|
55
89
|
end
|
56
90
|
end
|
@@ -65,25 +99,64 @@ describe UnicodeCaseConverter do
|
|
65
99
|
text = string.gsub(/\\u([\da-fA-F]{4})/) {|m| [$1].pack("H*").unpack("n*").pack("U*")}
|
66
100
|
it "downcases a string: #{text}" do
|
67
101
|
unicode_result = Unicode.downcase(text)
|
68
|
-
ucc = UnicodeCaseConverter::Converter.new(text)
|
69
|
-
expect(ucc
|
102
|
+
ucc = UnicodeCaseConverter::Converter.new(text).downcase
|
103
|
+
expect(ucc).to eq(unicode_result)
|
70
104
|
end
|
71
105
|
end
|
72
106
|
end
|
73
107
|
end
|
74
108
|
end
|
75
109
|
|
76
|
-
# it 'is fast' do
|
77
|
-
# string = "Hello World. My name is Jonas. What is your name? My name is Jonas. There it is! I found it. My name is Jonas E. Smith. Please turn to p. 55. Were Jane and co. at the party? They closed the deal with Pitt, Briggs & Co. at noon. Let's ask Jane and co. They should know. They closed the deal with Pitt, Briggs & Co. It closed yesterday. I can see Mt. Fuji from here. St. Michael's Church is on 5th st. near the light. That is JFK Jr.'s book. I visited the U.S.A. last year. I live in the E.U. How about you? I live in the U.S. How about you? I work for the U.S. Government in Virginia. I have lived in the U.S. for 20 years. She has $100.00 in her bag. She has $100.00. It is in her bag. He teaches science (He previously worked for 5 years as an engineer.) at the local University. Her email is Jane.Doe@example.com. I sent her an email. The site is: https://www.example.50.com/new-site/awesome_content.html. Please check it out. She turned to him, 'This is great.' she said. She turned to him, \"This is great.\" she said. She turned to him, \"This is great.\" She held the book out to show him. Hello!! Long time no see. Hello?? Who is there? Hello!? Is that you? Hello?! Is that you? 1.) The first item 2.) The second item 1.) The first item. 2.) The second item. 1) The first item 2) The second item 1) The first item. 2) The second item. 1. The first item 2. The second item 1. The first item. 2. The second item. • 9. The first item • 10. The second item ⁃9. The first item ⁃10. The second item a. The first item b. The second item c. The third list item This is a sentence\ncut off in the middle because pdf. It was a cold \nnight in the city. features\ncontact manager\nevents, activities\n You can find it at N°. 1026.253.553. That is where the treasure is. She works at Yahoo! in the accounting department. We make a good team, you and I. Did you see Albert I. Jones yesterday? Thoreau argues that by simplifying one’s life, “the laws of the universe will appear less complex. . . .” \"Bohr [...] used the analogy of parallel stairways [...]\" (Smith 55). If words are left off at the end of a sentence, and that is all that is omitted, indicate the omission with ellipsis marks (preceded and followed by a space) and then indicate the end of the sentence with a period . . . . Next sentence. I never meant that.... She left the store. I wasn’t really ... well, what I mean...see . . . what I'm saying, the thing is . . . I didn’t mean it. One further habit which was somewhat weakened . . . was that of combining words into self-interpreting compounds. . . . The practice was not abandoned. . .
|
110
|
+
# it 'is fast?' do
|
111
|
+
# string = "Hello World. My name is Jonas. What is your name? My name is Jonas. There it is! I found it. My name is Jonas E. Smith. Please turn to p. 55. Were Jane and co. at the party? They closed the deal with Pitt, Briggs & Co. at noon. Let's ask Jane and co. They should know. They closed the deal with Pitt, Briggs & Co. It closed yesterday. I can't see Mt. Fuji from here. St. Michael's Church is on 5th st. near the light. That is JFK Jr.'s book. I visited the U.S.A. last year. I live in the E.U. How about you? I live in the U.S. How about you? I work for the U.S. Government in Virginia. I have lived in the U.S. for 20 years. She has $100.00 in her bag. She has $100.00. It is in her bag. He teaches science (He previously worked for 5 years as an engineer.) at the local University. Her email is Jane.Doe@example.com. I sent her an email. The site is: https://www.example.50.com/new-site/awesome_content.html. Please check it out. She turned to him, 'This is great.' she said. She turned to him, \"This is great.\" she said. She turned to him, \"This is great.\" She held the book out to show him. Hello!! Long time no see. Hello?? Who is there? Hello!? Is that you? Hello?! Is that you? 1.) The first item 2.) The second item 1.) The first item. 2.) The second item. 1) The first item 2) The second item 1) The first item. 2) The second item. 1. The first item 2. The second item 1. The first item. 2. The second item. • 9. The first item • 10. The second item ⁃9. The first item ⁃10. The second item a. The first item b. The second item c. The third list item This is a sentence\ncut off in the middle because pdf. It was a cold \nnight in the city. features\ncontact manager\nevents, activities\n You can find it at N°. 1026.253.553. That is where the treasure is. She works at Yahoo! in the accounting department. We make a good team, you and I. Did you see Albert I. Jones yesterday? Thoreau argues that by simplifying one’s life, “the laws of the universe will appear less complex. . . .” \"Bohr [...] used the analogy of parallel stairways [...]\" (Smith 55). If words are left off at the end of a sentence, and that is all that is omitted, indicate the omission with ellipsis marks (preceded and followed by a space) and then indicate the end of the sentence with a period . . . . Next sentence. I never meant that.... She left the store. I wasn’t really ... well, what I mean...see . . . what I'm saying, the thing is . . . I didn’t mean it. One further habit which was somewhat weakened . . . was that of combining words into self-interpreting compounds. . . . The practice was not abandoned. . . ."
|
78
112
|
# benchmark do
|
79
|
-
#
|
80
|
-
#
|
81
|
-
#
|
82
|
-
#
|
83
|
-
#
|
113
|
+
# 10.times do
|
114
|
+
# data = StackProf.run(mode: :cpu, interval: 1000) do
|
115
|
+
# UnicodeCaseConverter::Converter.new(string * 100).downcase
|
116
|
+
# end
|
117
|
+
# puts StackProf::Report.new(data).print_text
|
84
118
|
# end
|
85
119
|
# end
|
86
120
|
# end
|
121
|
+
|
122
|
+
# it 'is fast' do
|
123
|
+
# puts 'activesupport'
|
124
|
+
# string = "Hello World. My name is Jonas. What is your name? My name is Jonas. There it is! I found it. My name is Jonas E. Smith. Please turn to p. 55. Were Jane and co. at the party? They closed the deal with Pitt, Briggs & Co. at noon. Let's ask Jane and co. They should know. They closed the deal with Pitt, Briggs & Co. It closed yesterday. I can see Mt. Fuji from here. St. Michael's Church is on 5th st. near the light. That is JFK Jr.'s book. I visited the U.S.A. last year. I live in the E.U. How about you? I live in the U.S. How about you? I work for the U.S. Government in Virginia. I have lived in the U.S. for 20 years. She has $100.00 in her bag. She has $100.00. It is in her bag. He teaches science (He previously worked for 5 years as an engineer.) at the local University. Her email is Jane.Doe@example.com. I sent her an email. The site is: https://www.example.50.com/new-site/awesome_content.html. Please check it out. She turned to him, 'This is great.' she said. She turned to him, \"This is great.\" she said. She turned to him, \"This is great.\" She held the book out to show him. Hello!! Long time no see. Hello?? Who is there? Hello!? Is that you? Hello?! Is that you? 1.) The first item 2.) The second item 1.) The first item. 2.) The second item. 1) The first item 2) The second item 1) The first item. 2) The second item. 1. The first item 2. The second item 1. The first item. 2. The second item. • 9. The first item • 10. The second item ⁃9. The first item ⁃10. The second item a. The first item b. The second item c. The third list item This is a sentence\ncut off in the middle because pdf. It was a cold \nnight in the city. features\ncontact manager\nevents, activities\n You can find it at N°. 1026.253.553. That is where the treasure is. She works at Yahoo! in the accounting department. We make a good team, you and I. Did you see Albert I. Jones yesterday? Thoreau argues that by simplifying one’s life, “the laws of the universe will appear less complex. . . .” \"Bohr [...] used the analogy of parallel stairways [...]\" (Smith 55). If words are left off at the end of a sentence, and that is all that is omitted, indicate the omission with ellipsis marks (preceded and followed by a space) and then indicate the end of the sentence with a period . . . . Next sentence. I never meant that.... She left the store. I wasn’t really ... well, what I mean...see . . . what I'm saying, the thing is . . . I didn’t mean it. One further habit which was somewhat weakened . . . was that of combining words into self-interpreting compounds. . . . The practice was not abandoned. . . .ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΆΈΉΊΌΎΏΪΫαβγδεζηθικλμνξοπρστυφχψωάέήίόύώϊϋ" * 10000
|
125
|
+
# benchmark do
|
126
|
+
# 5.times do
|
127
|
+
# string.dup.mb_chars.downcase.to_s
|
128
|
+
# end
|
129
|
+
# 5.times do
|
130
|
+
# string.dup.mb_chars.upcase.to_s
|
131
|
+
# end
|
132
|
+
# end
|
133
|
+
# end
|
134
|
+
|
135
|
+
it 'is fast' do
|
136
|
+
puts 'this gem'
|
137
|
+
string = "Hello World. My name is Jonas. What is your name? My name is Jonas. There it is! I found it. My name is Jonas E. Smith. Please turn to p. 55. Were Jane and co. at the party? They closed the deal with Pitt, Briggs & Co. at noon. Let's ask Jane and co. They should know. They closed the deal with Pitt, Briggs & Co. It closed yesterday. I can see Mt. Fuji from here. St. Michael's Church is on 5th st. near the light. That is JFK Jr.'s book. I visited the U.S.A. last year. I live in the E.U. How about you? I live in the U.S. How about you? I work for the U.S. Government in Virginia. I have lived in the U.S. for 20 years. She has $100.00 in her bag. She has $100.00. It is in her bag. He teaches science (He previously worked for 5 years as an engineer.) at the local University. Her email is Jane.Doe@example.com. I sent her an email. The site is: https://www.example.50.com/new-site/awesome_content.html. Please check it out. She turned to him, 'This is great.' she said. She turned to him, \"This is great.\" she said. She turned to him, \"This is great.\" She held the book out to show him. Hello!! Long time no see. Hello?? Who is there? Hello!? Is that you? Hello?! Is that you? 1.) The first item 2.) The second item 1.) The first item. 2.) The second item. 1) The first item 2) The second item 1) The first item. 2) The second item. 1. The first item 2. The second item 1. The first item. 2. The second item. • 9. The first item • 10. The second item ⁃9. The first item ⁃10. The second item a. The first item b. The second item c. The third list item This is a sentence\ncut off in the middle because pdf. It was a cold \nnight in the city. features\ncontact manager\nevents, activities\n You can find it at N°. 1026.253.553. That is where the treasure is. She works at Yahoo! in the accounting department. We make a good team, you and I. Did you see Albert I. Jones yesterday? Thoreau argues that by simplifying one’s life, “the laws of the universe will appear less complex. . . .” \"Bohr [...] used the analogy of parallel stairways [...]\" (Smith 55). If words are left off at the end of a sentence, and that is all that is omitted, indicate the omission with ellipsis marks (preceded and followed by a space) and then indicate the end of the sentence with a period . . . . Next sentence. I never meant that.... She left the store. I wasn’t really ... well, what I mean...see . . . what I'm saying, the thing is . . . I didn’t mean it. One further habit which was somewhat weakened . . . was that of combining words into self-interpreting compounds. . . . The practice was not abandoned. . . .ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΆΈΉΊΌΎΏΪΫαβγδεζηθικλμνξοπρστυφχψωάέήίόύώϊϋ" * 10000
|
138
|
+
benchmark do
|
139
|
+
5.times do
|
140
|
+
UnicodeCaseConverter::Converter.new(string).downcase
|
141
|
+
end
|
142
|
+
5.times do
|
143
|
+
UnicodeCaseConverter::Converter.new(string).upcase
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
it 'is fast' do
|
149
|
+
puts 'unicode'
|
150
|
+
string = "Hello World. My name is Jonas. What is your name? My name is Jonas. There it is! I found it. My name is Jonas E. Smith. Please turn to p. 55. Were Jane and co. at the party? They closed the deal with Pitt, Briggs & Co. at noon. Let's ask Jane and co. They should know. They closed the deal with Pitt, Briggs & Co. It closed yesterday. I can see Mt. Fuji from here. St. Michael's Church is on 5th st. near the light. That is JFK Jr.'s book. I visited the U.S.A. last year. I live in the E.U. How about you? I live in the U.S. How about you? I work for the U.S. Government in Virginia. I have lived in the U.S. for 20 years. She has $100.00 in her bag. She has $100.00. It is in her bag. He teaches science (He previously worked for 5 years as an engineer.) at the local University. Her email is Jane.Doe@example.com. I sent her an email. The site is: https://www.example.50.com/new-site/awesome_content.html. Please check it out. She turned to him, 'This is great.' she said. She turned to him, \"This is great.\" she said. She turned to him, \"This is great.\" She held the book out to show him. Hello!! Long time no see. Hello?? Who is there? Hello!? Is that you? Hello?! Is that you? 1.) The first item 2.) The second item 1.) The first item. 2.) The second item. 1) The first item 2) The second item 1) The first item. 2) The second item. 1. The first item 2. The second item 1. The first item. 2. The second item. • 9. The first item • 10. The second item ⁃9. The first item ⁃10. The second item a. The first item b. The second item c. The third list item This is a sentence\ncut off in the middle because pdf. It was a cold \nnight in the city. features\ncontact manager\nevents, activities\n You can find it at N°. 1026.253.553. That is where the treasure is. She works at Yahoo! in the accounting department. We make a good team, you and I. Did you see Albert I. Jones yesterday? Thoreau argues that by simplifying one’s life, “the laws of the universe will appear less complex. . . .” \"Bohr [...] used the analogy of parallel stairways [...]\" (Smith 55). If words are left off at the end of a sentence, and that is all that is omitted, indicate the omission with ellipsis marks (preceded and followed by a space) and then indicate the end of the sentence with a period . . . . Next sentence. I never meant that.... She left the store. I wasn’t really ... well, what I mean...see . . . what I'm saying, the thing is . . . I didn’t mean it. One further habit which was somewhat weakened . . . was that of combining words into self-interpreting compounds. . . . The practice was not abandoned. . . .ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩΆΈΉΊΌΎΏΪΫαβγδεζηθικλμνξοπρστυφχψωάέήίόύώϊϋ" * 10000
|
151
|
+
benchmark do
|
152
|
+
5.times do
|
153
|
+
Unicode::downcase(string)
|
154
|
+
end
|
155
|
+
5.times do
|
156
|
+
Unicode::upcase(string)
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
87
160
|
end
|
88
161
|
|
89
162
|
def benchmark(&block)
|
@@ -19,7 +19,9 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_development_dependency "unicode"
|
22
|
+
spec.add_development_dependency "activesupport"
|
22
23
|
spec.add_development_dependency "rspec"
|
23
24
|
spec.add_development_dependency "bundler", "~> 1.9"
|
24
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
26
|
+
spec.add_development_dependency "stackprof"
|
25
27
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unicode_case_converter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin S. Dias
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01-
|
11
|
+
date: 2016-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: unicode
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activesupport
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: rspec
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -66,6 +80,20 @@ dependencies:
|
|
66
80
|
- - "~>"
|
67
81
|
- !ruby/object:Gem::Version
|
68
82
|
version: '10.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: stackprof
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
69
97
|
description: A pure Ruby implementation to upcase and downcase unicode strings
|
70
98
|
email:
|
71
99
|
- diasks2@gmail.com
|
@@ -85,7 +113,6 @@ files:
|
|
85
113
|
- spec/spec_helper.rb
|
86
114
|
- spec/unicode_case_converter_spec.rb
|
87
115
|
- unicode_case_converter.gemspec
|
88
|
-
- unicode_data_importer.rb
|
89
116
|
homepage: https://github.com/diasks2/unicode_case_converter
|
90
117
|
licenses: []
|
91
118
|
metadata: {}
|
data/unicode_data_importer.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
require 'csv'
|
2
|
-
|
3
|
-
file_location = '/Users/diasks2/Desktop/UnicodeData.txt'
|
4
|
-
csv_text = File.read(file_location)
|
5
|
-
csv = CSV.parse(csv_text, col_sep: ";")
|
6
|
-
uppercase = ''
|
7
|
-
lowercase = ''
|
8
|
-
csv.each_with_index do |row, index|
|
9
|
-
next if row[-1].nil?
|
10
|
-
lowercase = lowercase + "u{" + row[0] + "}"
|
11
|
-
uppercase = uppercase + "u{" + row[-1] + "}"
|
12
|
-
end
|
13
|
-
puts "Lowercase: #{lowercase}"
|
14
|
-
puts "Uppercase: #{uppercase}"
|