summaryrefslogtreecommitdiff
path: root/cpan/Unicode-Collate
diff options
context:
space:
mode:
authorChris 'BinGOs' Williams <chris@bingosnet.co.uk>2011-11-06 21:59:59 +0000
committerChris 'BinGOs' Williams <chris@bingosnet.co.uk>2011-11-06 23:49:03 +0000
commitd88bd77ad0e19d4e404b627f2a3b7c8b3a160de0 (patch)
treee646c7ff05a88060114920dc9f928c17e2d996ec /cpan/Unicode-Collate
parent7c5c3d9b4e6d7073250ddc6f26c36d71eeeb2de7 (diff)
downloadperl-d88bd77ad0e19d4e404b627f2a3b7c8b3a160de0.tar.gz
Update Unicode-Collate to CPAN version 0.84
[DELTA] 0.84 Sun Nov 6 14:44:51 2011 - U::C::Locale supports script codes. - U::C::Locale newly supports locales: fa, sr_Latn, ur. - added loc_fa.t, loc_srla.t, loc_ur.t in t. 0.83 Sun Oct 30 20:22:04 2011 - mklocale: auto-generate equivalents for suppressed contractions. * be.txt, bg.txt, kk.txt, mk.txt, ru.txt, sr.txt, uk.txt in data are simplified. * but no Locale/*.pl will be modified. 0.82 Sun Oct 30 10:03:48 2011 - U::C::Locale newly supports locales: si, si__dictionary, sv__reformed, ta, te, th, wae. - added loc_si.t, loc_sidt.t, loc_svrf.t, loc_ta.t, loc_te.t, loc_th.t, loc_wae.t in t. - updated some locales to CLDR 2.0 : sk, sr, sv, uk. - updated CJK/Pinyin.pm according to CLDR 2.0.
Diffstat (limited to 'cpan/Unicode-Collate')
-rw-r--r--cpan/Unicode-Collate/Changes27
-rw-r--r--cpan/Unicode-Collate/Collate.pm2
-rw-r--r--cpan/Unicode-Collate/Collate/CJK/Pinyin.pm227
-rw-r--r--cpan/Unicode-Collate/Collate/Locale.pm137
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/fa.pl49
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/si.pl8
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/si_dict.pl7
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/sk.pl4
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/sl.pl1
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/sr.pl48
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/sv.pl4
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/sv_refo.pl84
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/ta.pl30
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/te.pl7
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/th.pl15
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/uk.pl40
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/ur.pl88
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/wae.pl23
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/zh_pin.pl2
-rw-r--r--cpan/Unicode-Collate/README2
-rw-r--r--cpan/Unicode-Collate/t/loc_be.t22
-rw-r--r--cpan/Unicode-Collate/t/loc_cyrl.t244
-rw-r--r--cpan/Unicode-Collate/t/loc_fa.t142
-rw-r--r--cpan/Unicode-Collate/t/loc_fiph.t7
-rw-r--r--cpan/Unicode-Collate/t/loc_kk.t31
-rw-r--r--cpan/Unicode-Collate/t/loc_si.t39
-rw-r--r--cpan/Unicode-Collate/t/loc_sidt.t43
-rw-r--r--cpan/Unicode-Collate/t/loc_sk.t18
-rw-r--r--cpan/Unicode-Collate/t/loc_sr.t182
-rw-r--r--cpan/Unicode-Collate/t/loc_srla.t186
-rw-r--r--cpan/Unicode-Collate/t/loc_sv.t24
-rw-r--r--cpan/Unicode-Collate/t/loc_svrf.t193
-rw-r--r--cpan/Unicode-Collate/t/loc_ta.t85
-rw-r--r--cpan/Unicode-Collate/t/loc_te.t36
-rw-r--r--cpan/Unicode-Collate/t/loc_test.t17
-rw-r--r--cpan/Unicode-Collate/t/loc_th.t81
-rw-r--r--cpan/Unicode-Collate/t/loc_uk.t188
-rw-r--r--cpan/Unicode-Collate/t/loc_ur.t136
-rw-r--r--cpan/Unicode-Collate/t/loc_wae.t138
39 files changed, 2201 insertions, 416 deletions
diff --git a/cpan/Unicode-Collate/Changes b/cpan/Unicode-Collate/Changes
index 0779628217..d77ff01db3 100644
--- a/cpan/Unicode-Collate/Changes
+++ b/cpan/Unicode-Collate/Changes
@@ -1,5 +1,24 @@
Revision history for Perl module Unicode::Collate.
+0.84 Sun Nov 6 14:44:51 2011
+ - U::C::Locale supports script codes.
+ - U::C::Locale newly supports locales: fa, sr_Latn, ur.
+ - added loc_fa.t, loc_srla.t, loc_ur.t in t.
+
+0.83 Sun Oct 30 20:22:04 2011
+ - mklocale: auto-generate equivalents for suppressed contractions.
+ * be.txt, bg.txt, kk.txt, mk.txt, ru.txt, sr.txt, uk.txt in data
+ are simplified.
+ * but no Locale/*.pl will be modified.
+
+0.82 Sun Oct 30 10:03:48 2011
+ - U::C::Locale newly supports locales: si, si__dictionary,
+ sv__reformed, ta, te, th, wae.
+ - added loc_si.t, loc_sidt.t, loc_svrf.t, loc_ta.t, loc_te.t,
+ loc_th.t, loc_wae.t in t.
+ - updated some locales to CLDR 2.0 : sk, sr, sv, uk.
+ - updated CJK/Pinyin.pm according to CLDR 2.0.
+
0.81 Sun Oct 23 21:32:36 2011
- U::C::Locale newly supports locales: ml, mr, or, pa.
- added loc_ml.t, loc_mr.t, loc_or.t, loc_pa.t in t.
@@ -129,7 +148,7 @@ Revision history for Perl module Unicode::Collate.
0.61 Sat Oct 2 11:41:29 2010
- U::C::Locale newly supports locales: hr, ig, sq.
- added loc_hr.t, loc_ig.t, loc_sq.t in t.
- - precomposites of e-dot-below, o-dot-below, o-tilde are tailored as well.
+ - precomposed e-dot-below, o-dot-below, o-tilde are tailored as well.
(affected locales: et, yo)
- Vietnamese (vi): added contractions for non-blocked decompositions
* base + dot-below + mark such as a\x{323}\x{306}, \x{1EA1}\x{306} etc.
@@ -143,14 +162,14 @@ Revision history for Perl module Unicode::Collate.
- U::C::Locale newly supports locales: de__phonebook, nso, om, tn, vi.
- added loc_de.t, loc_deph.t, loc_nso.t, loc_om.t, loc_tn.t, loc_vi.t in t.
- - precomposites of a-breve, a-circ, e-circ, o-circ are tailored as well.
+ - precomposed a-breve, a-circ, e-circ, o-circ are tailored as well.
(affected locales: ro, sk, sv)
0.59 Sun Sep 5 17:03:52 2010
- U::C::Locale newly supports locales: az, fil, ha, lt, mt, tr, wo, yo.
- added loc_az.t, loc_fil.t, loc_ha.t, loc_lt.t, loc_mt.t, loc_tr.t,
loc_wo.t, loc_yo.t in t.
- - precomposites of a-uml, o-uml, and u-uml are tailored as well.
+ - precomposed a-uml, o-uml, and u-uml are tailored as well.
(affected locales: da, et, fi, fo, is, kl, nb, nn, sk, sv)
0.58 Sun Aug 29 19:56:50 2010
@@ -287,7 +306,7 @@ Revision history for Perl module Unicode::Collate.
0.26 Sun Aug 03 22:23:17 2003
- fix: an expansion in which a CE is level 3 ignorable and others are not
was wrongly made level 3 ignorable as a whole entry.
- (In DUCET, some precomposites in Musical Symbols are so)
+ (In DUCET, some precomposed characters in Musical Symbols are so)
0.25 Mon Jun 06 23:20:17 2003
- fix Makefile.PL.
diff --git a/cpan/Unicode-Collate/Collate.pm b/cpan/Unicode-Collate/Collate.pm
index 0ed7f2a4b8..49b74be3fc 100644
--- a/cpan/Unicode-Collate/Collate.pm
+++ b/cpan/Unicode-Collate/Collate.pm
@@ -14,7 +14,7 @@ use File::Spec;
no warnings 'utf8';
-our $VERSION = '0.81';
+our $VERSION = '0.84';
our $PACKAGE = __PACKAGE__;
### begin XS only ###
diff --git a/cpan/Unicode-Collate/Collate/CJK/Pinyin.pm b/cpan/Unicode-Collate/Collate/CJK/Pinyin.pm
index 3e0ca7696d..986fe442e4 100644
--- a/cpan/Unicode-Collate/Collate/CJK/Pinyin.pm
+++ b/cpan/Unicode-Collate/Collate/CJK/Pinyin.pm
@@ -3,7 +3,7 @@ package Unicode::Collate::CJK::Pinyin;
use 5.006;
use strict;
-our $VERSION = '0.76';
+our $VERSION = '0.82';
my %u2p;
my $wt = 0x8000;
@@ -56,7 +56,8 @@ __DATA__
6160 9A9C 96A9 58BA 5DB4 61CA 6FB3 64D9 93CA 9A41
7FF6
516B 4EC8 6252 6733 7390 593F 5C9C 82AD 5CC7 67ED
-75A4 54F5 634C 7C91 7F93 8686 91DB 91DF 8C5D 9C83
+75A4 54F5 5DFC 634C 7C91 7F93 8686 91DB 91DF 8C5D
+9C83
53D0 72AE 629C 577A 59AD 62D4 8307 70A6 7679 80C8
83DD 8A59 8DCB 8EF7 98B0 9B43 58A2 9F25
628A 94AF 9200 9776
@@ -179,11 +180,10 @@ __DATA__
535C 5575 8421 818A
5CEC 5EAF 900B 6661 923D 8AA7
9CEA 8F50 91AD
-535F 8865 54FA 6355 88DC 9D4F
+535F 8865 54FA 6355 55B8 88DC 9D4F
4E0D 5E03 4F48 5425 6B65 5498 6016 62AA 6B68 6B69
67E8 949A 52CF 57D4 57D7 6091 6357 8379 90E8 94B8
57E0 74FF 8500 8E04 90F6 9914 7BF0 9922 7C3F
-517A
5693 64E6 6503
7924
906A 56C3
@@ -289,9 +289,10 @@ __DATA__
5C3A 53FA 544E 4F88 5376 9F7F 5791 80E3 6065 7C8E
803B 8687 88B3 6B3C 6B6F 88B2 88ED 9279 892B 9F52
5F73 53F1 65A5 6758 707B 8D64 996C 62B6 52C5 605C
-70BD 52D1 7FC4 7FC5 6555 70FE 75D3 557B 6E41 98ED
-50BA 75F8 815F 8DEE 9253 96F4 618F 7608 7FE4 906B
-9290 6157 761B 7FE8 71BE 61D8 8DA9 994E 9D92 9DD8
+70BD 52D1 7FC4 7FC5 6555 70FE 75D3 557B 6E41 7873
+98ED 50BA 75F8 815F 8DEE 9253 96F4 618F 7608 7FE4
+906B 9290 6157 761B 7FE8 71BE 61D8 8DA9 994E 9D92
+9DD8
599B 9EB6
5145 51B2 5FE1 6C96 833A 6D7A 73EB 7FC0 8202 5603
644F 5FB8 6183 61A7 885D 7F7F 825F 8E56
@@ -458,8 +459,8 @@ __DATA__
7538 6541 6382 508E 53A7 5D6E 6EC7 69C7 69D9 7628
98A0 8E4E 5DC5 985A 985B 766B 5DD3 5DD4 6527 7672
9F7B
-5178 594C 70B9 5A70 655F 8DD5 7898 84A7 8547 8E2E
-9EDE 56B8
+5178 594C 70B9 5A70 7320 655F 8DD5 7898 84A7 8547
+8E2E 9EDE 56B8
7535 4F43 963D 576B 5E97 57AB 6242 73B7 94BF 5A5D
60E6 6DC0 5960 7414 6BBF 8714 96FB 588A 58C2 6A42
6A5D 6FB1 975B 765C 7C1F 9A54
@@ -484,7 +485,7 @@ __DATA__
914A 91D8 976A
5975 9876 9802 9F0E 5D7F 9F11 6FCE 85A1 9424
8BA2 5FCA 9964 77F4 5B9A 8A02 98E3 5576 94E4 6917
-815A 7887 952D 78A0 92CC 9320 78F8 9841
+815A 7887 952D 78A0 874A 92CC 9320 78F8 9841
8423 8062
4E1F 4E22 94E5 92A9
4E1C 51AC 549A 5CBD 6771 82F3 6638 6C21 5032 9E2B
@@ -513,6 +514,7 @@ __DATA__
77ED
6BB5 65AD 5845 7F0E 846E 6934 7145 7456 8176 78AB
953B 7DDE 6BC8 7C16 935B 65B7 8E96 7C6A
+8968
5796 5806 5860 5D5F 75FD 78D3 9D2D 941C
9827
961F 5BF9 514A 514C 5151 5BFE 794B 603C 966E 968A
@@ -553,13 +555,13 @@ __DATA__
5CCE
6441
97A5
-800C 5150 4F95 9651 5CCF 6D0F 834B 682D 80F9 5532
-88BB 9E38 804F 8F00 9C95 96AD 9AF5 9B9E 9D2F 8F5C
-5C12 5C13 5C14 8033 8FE9 6D31 9975 682E 6BE6 73E5
-94D2 723E 990C 99EC 85BE 9087
+513F 800C 5150 4F95 5152 9651 5CCF 6D0F 834B 682D
+80F9 5532 88BB 9E38 7CAB 804F 8F00 9C95 96AD 9AF5
+9B9E 9D2F 8F5C
+53BC 5C12 5C13 5C14 8033 8FE9 6D31 9975 682E 6BE6
+73E5 94D2 723E 990C 99EC 85BE 9087 8DB0
4E8C 5F0D 5F10 4F74 5235 54A1 8D30 8CAE 8848 8CB3
8A80 927A 6A32
-7CAB 8DB0
53D1 6CB7 767A 50A0 767C 9166 5F42 91B1
4E4F 4F10 59C2 57A1 6D4C 75BA 7F5A 8337 9600 6830
781D 7B4F 7782 7F70 95A5 7F78 6A43 85C5
@@ -594,8 +596,9 @@ __DATA__
4FF7 5255 539E 75BF 966B 5C5D 8409 5EC3 8CBB 75F1
9544 5EE2 66CA 7648 9F23 6FF7 6AE0 9BE1 9428 9745
5A54 6683
-5206 5429 5E09 7EB7 82AC 6610 6C1B 886F 7D1B 7FC2
-515D 68FB 8A1C 915A 9216 96F0 6706 71D3 9934 9959
+5206 5429 5E09 7EB7 82AC 6610 6C1B 54DB 886F 517A
+7D1B 7FC2 515D 68FB 8A1C 915A 9216 96F0 6706 71D3
+9934 9959
575F 59A2 5C8E 6C7E 670C 678C 7083 80A6 7F92 86A0
86A1 68A4 68FC 711A 84B6 999A 96AB 58B3 5E69 6FC6
8561 9B75 6A68 71CC 8C6E 9F22 7FB5 9F16 8C76 8F52
@@ -607,8 +610,8 @@ __DATA__
4E30 98CE 4EF9 51E8 51EC 59A6 6CA3 6CA8 51EE 67AB
5C01 75AF 76FD 781C 98A8 5CEF 5CF0 5051 687B 70FD
5D36 7326 8451 950B 6953 728E 8702 760B 78B8 50FC
-7BC8 9137 92D2 6A92 8C50 93E0 9146 5BF7 7043 8634
-973B 882D 974A 98CC 9EB7
+7BC8 9137 92D2 6A92 95CF 8C50 93E0 9146 5BF7 7043
+8634 973B 882D 974A 98CC 9EB7
51AF 5906 6340 6D72 9022 5838 99AE 6453 6F28 7D98
8242
8BBD 8982 552A 8AF7
@@ -695,12 +698,11 @@ __DATA__
9CA0 9ABE 9BC1
66F4 5829 6685
63B6 6929
-603E
5DE5 5F13 516C 53B7 529F 653B 675B 4F9B 739C 7CFC
80B1 5BAB 5BAE 606D 8EAC 9F9A 5311 5868 5E4A 6129
89E5 8EB3 7195 78BD 9AF8 89F5 9F8F 9F94
5EFE 5DE9 6C5E 62F1 62F2 6831 73D9 8F01 92DB 978F
-5171 8D21 7FBE 551D 8CA2
+5171 8D21 7FBE 551D 8CA2 83BB
86A3 6150
52FE 4F5D 6C9F 94A9 88A7 7F11 920E 6E9D 9264 7DF1
8920 7BDD 97B2 97DD
@@ -780,7 +782,7 @@ __DATA__
9097 542B 90AF 51FD 5481 80A3 51FE 8677 5505 5705
5A22 6D5B 5D21 6657 6892 6DB5 7113 7400 5BD2 5D45
97E9 751D 7B68 872C 6F8F 92E1 9B7D 97D3
-5388 7F55 6D6B 558A 850A 961A 8C43 9B2B
+4E06 5388 7F55 6D6B 558A 850A 961A 8C43 9B2B
6C49 5C7D 6C57 95EC 65F1 5CBE 54FB 57BE 608D 634D
6D86 7302 839F 6658 6665 710A 83E1 91EC 9588 7694
7745 50BC 86FF 9894 99AF 6496 6F22 872D 8C8B 66B5
@@ -810,8 +812,8 @@ __DATA__
7BD5 7FEE 879B 9B7A 7909 95D4 97A8 9F55 8988 9DA1
76AC 9449 9FA2
4F6B 578E 8D3A 8894 7103 8CC0 55C3 7142 788B 7187
-8910 8D6B 9E64 7FEF 58D1 764B 8B1E 7200 9DAE 9DB4
-974E 9E16 974F
+8910 8D6B 9E64 7A52 7FEF 58D1 764B 8B1E 7200 9DAE
+9DB4 974E 9E16 974F
7CAD 974D
9ED2 9ED1 563F 6F76
62EB 75D5 978E
@@ -823,7 +825,6 @@ __DATA__
583C
6DA5 9D46
5677
-4E4A
53FF 543D 544D 7074 8F70 54C4 8A07 70D8 8EE3 63C8
6E39 7122 7861 8C3E 85A8 8F37 569D 9367 8F5F
4EDC 5F18 5985 7EA2 5430 5B8F 6C6F 7392 7EAE 95F3
@@ -850,11 +851,11 @@ __DATA__
7E20 879C 9190 9836 89F3 9378 992C 9D60 702B 9B0D
9C17 9D98 9DA6
4E55 6C7B 864E 6D52 4FFF 8400 7425 865D 6EF8
-4E92 5F16 6236 6237 6238 51B1 51B4 8290 5E0D 62A4
-6C8D 6CAA 5CB5 6019 623D 6608 6791 6018 795C 7B0F
-5A5F 6248 74E0 695B 55C0 7D94 9120 96FD 5AED 5AEE
-6462 6EEC 8530 69F4 71A9 9CF8 7C04 9359 569B 9E71
-8B77 9CE0 97C4 9800 9C6F 9E0C
+4E65 4E92 5F16 6236 6237 6238 51B1 51B4 8290 5E0D
+62A4 6C8D 6CAA 5CB5 6019 623D 6608 6791 6018 795C
+7B0F 5A5F 6248 74E0 695B 55C0 7D94 9120 96FD 5AED
+5AEE 6462 6EEC 8530 69F4 71A9 9CF8 7C04 9359 569B
+9E71 8B77 9CE0 97C4 9800 9C6F 9E0C
4E4E 7C90 552C 7CCA 933F 9BF1
82B1 82B2 54D7 5629 848A 9335
534E 59E1 9A85 83EF 91EA 91EB 94E7 6ED1 733E 6433
@@ -1004,8 +1005,8 @@ __DATA__
6648 70C4 768E 77EB 811A 94F0 6405 6E6B 7D5E 527F
656B 6E6C 714D 8173 8CCB 50E5 6477 669E 8E0B 9278
9903 510C 528B 5FBA 649F 64B9 96A6 5FBC 61BF 657D
-657F 7F34 66D2 74AC 77EF 76A6 87DC 7E73 8B51 5B42
-652A 705A 9C4E
+657F 71DE 7F34 66D2 74AC 77EF 76A6 87DC 7E73 8B51
+5B42 652A 705A 9C4E
53EB 544C 5CE4 630D 8A06 73D3 7A8C 8F7F 8F83 654E
6559 7A96 6ED8 8F03 5602 5626 65A0 6F16 9175 564D
5DA0 6F50 566D 5B13 7365 85E0 8DAD 8F4E 91AE 8B65
@@ -1211,8 +1212,8 @@ __DATA__
7046 7C43 7E7F 862D 6595 6B04 7937 8974 56D2 7061
7C63 6B17 8B95 8E9D 9484 97CA
89C8 6D68 63FD 7F06 6984 6F24 7F71 9182 58C8 61D2
-89A7 64E5 5B3E 61F6 5B44 89BD 5B4F 652C 7060 6B16
-9872 7E9C
+89A7 64E5 5B3E 61F6 5B44 89BD 5B4F 652C 7060 56D5
+6B16 9872 7E9C
70C2 6EE5 71D7 5682 6FEB 7201 721B 74D3 7224 946D
7CF7
7226 897D
@@ -1300,7 +1301,7 @@ __DATA__
5AFD 5BEE 5D9A 5D9B 6579 7360 7F2D 907C 66B8 71CE
7499 81AB 7642 9E69 5C6A 5EEB 7C1D 7E5A 87DF 8C42
8CFF 8E58 9410 9ACE 85D4 98C9 9DEF
-948C 91D5 911D 84FC 61AD 77AD 957D 7212
+53FE 948C 91D5 911D 84FC 61AD 77AD 66E2 957D 7212
5C25 5C26 7093 6599 5C1E 5ED6 6482 7AB7 9563
720E
5217 52A3 51BD 52BD 59F4 6312 6D0C 8322 8FFE 54F7
@@ -1399,9 +1400,9 @@ __DATA__
8BBA 6EA3 8AD6
78EE
7F57 5570 9831 56C9
-7321 8136 841D 903B 6924 8161 8999 9523 7BA9 9AA1
-9559 87BA 7F85 89B6 93CD 5138 89BC 9A3E 651E 7380
-863F 908F 6B0F 9A58 9E01 7C6E 947C 9960
+7F56 7321 8136 841D 903B 6924 8161 8999 9523 7BA9
+9AA1 9559 87BA 7F85 89B6 93CD 5138 89BC 9A3E 651E
+7380 863F 908F 6B0F 9A58 9E01 7C6E 947C 9960
5246 502E 84CF 88F8 8EB6 7630 8803 81DD 66EA 7673
6CFA 5CC8 6D1B 7EDC 8366 9A86 6D1C 73DE 7866 7B3F
7D61 843D 55E0 645E 6F2F 7296 927B 96D2 99F1 9BA5
@@ -1497,7 +1498,7 @@ __DATA__
910D 5AC7 6E9F 733D 84C2 669D 69A0 9298 9CF4 7791
879F 89AD
4F72 59F3 51D5 614F 9169
-547D 8A7A
+547D 6927 8A7A
63B5
8C2C 8B2C
6478
@@ -1506,11 +1507,11 @@ __DATA__
5298 995D
62B9 61E1
672B 52B0 573D 59BA 5E13 6B7E 6B7F 6B81 6CAB 8309
-964C 5E1E 6629 67BA 768C 771C 773F 781E 79E3 8388
-83AB 773D 7C96 7D48 6E50 86E8 8C83 55FC 587B 5BDE
-6F20 734F 84E6 8C8A 66AF 9286 977A 5AFC 9ED9 763C
-7790 7799 9546 9B69 58A8 9ED8 700E 8B29 8C98 85E6
-87D4 93CC 7205 9A40 7933 7E86 8031
+964C 5E1E 6629 67BA 551C 768C 771C 773F 781E 79E3
+8388 83AB 773D 7C96 7D48 6E50 86E8 8C83 55FC 587B
+5BDE 6F20 734F 84E6 8C8A 66AF 9286 977A 5AFC 9ED9
+763C 7790 7799 9546 9B69 58A8 9ED8 700E 8B29 8C98
+85E6 87D4 93CC 7205 9A40 7933 7E86 8031
5E85 603D 5C1B 9B79 9EBF
54DE
725F 4F94 52BA 6048 6D20 7738 8C0B 86D1 7F2A 8E0E
@@ -1519,9 +1520,9 @@ __DATA__
6BEA 6C01 58B2
6BCD 4EA9 7261 5776 59C6 5CD4 7273 7546 7552 80DF
755D 755E 782A 756E 9267 8E07
-6728 4EEB 76EE 6C90 72C7 7091 7267 82DC 6BE3 83AF
-869E 94BC 52DF 96EE 5893 5E55 5E59 6154 6958 7766
-926C 6155 66AE 8252 9702 7A46 7E38 97AA
+6728 4EEB 6730 76EE 6C90 72C7 7091 7267 82DC 6BE3
+83AF 869E 94BC 52DF 96EE 5893 5E55 5E59 6154 6958
+7766 926C 6155 66AE 8252 9702 7A46 7E38 97AA
51E9 62C7
55EF
62CF 62FF 6310 55F1 954E 93BF
@@ -1640,7 +1641,7 @@ __DATA__
723F 6D00 76D8 8DD8 5ABB 5E4B 84B0 642B 69C3 76E4
78D0 7E0F 78FB 8E52 700A 87E0 8E63 939C 97B6
51B8 5224 6C9C 62DA 6CEE 708D 53DB 7249 76FC 7554
-88A2 8A4A 6EBF 9816 92EC 897B 947B
+8041 88A2 8A4A 6EBF 9816 92EC 897B 947B
9D65
4E53 6C97 80EE 96F1 6EC2 8196 9736
5390 5E9E 5396 9004 65C1 823D 5ACE 5FAC 8783 9CD1
@@ -1672,7 +1673,6 @@ __DATA__
6367 6DCE 768F 527B
63BD 692A 78B0 8E2B
7BF7
-95CF
4E15 4F13 4F3E 6279 7EB0 90B3 576F 62AB 62B7 708B
72C9 7812 6082 79DB 79E0 7D15 94CD 65C7 7FCD 801A
8C7E 9208 921A 9239 925F 9294 5288 78C7 99D3 9AEC
@@ -1720,7 +1720,6 @@ __DATA__
5256 5A1D
6294 6299 634A 638A 88D2 7B81 9307
5485 54E3 5A44 7283 5ECD
-54DB
4EC6 6534 6251 9660 5657 64B2 6F7D 64C8 9BC6
530D 8386 812F 83E9 83D0 8461 84B1 84B2 50D5 917A
58A3 735B 749E 6FEE 77A8 7A59 9564 8965 7E80 93F7
@@ -1842,8 +1841,8 @@ __DATA__
77BF 9F29 8627 5FC2 7048 6235 6B0B 6C0D 7C67 81DE
766F 8837 8862 8EA3 883C 947A 9E1C
53D6 7AD8 5A36 8A53 7AEC 877A 9F8B 9F72
-53BA 53BB 521E 547F 801D 9612 89D1 8DA3 95B4 9EAE
-95C3 89B7 9F01
+53BA 53BB 521E 547F 551F 801D 9612 89D1 8DA3 95B4
+9EAE 95C3 89B7 9F01
8FF2 8850
5CD1 5F2E 606E 609B 5708 570F 68EC 99E9 9409
5168 6743 4F7A 8BE0 59FE 6CC9 6D24 8343 62F3 7277
@@ -1862,8 +1861,6 @@ __DATA__
9E4A 9D72
590B 56F7 5CEE 9021
5BAD 5E2C 88D9 7FA3 7FA4 88E0
-513F 5152
-7F56
5465 80B0 887B 8887 86A6 88A1 86BA 7136 9AE5 562B
9AEF 71C3 7E4E
5184 5189 59CC 82D2 67D3 73C3 5AA3 6A6A
@@ -1925,7 +1922,7 @@ __DATA__
4EE8 6331 6332 6492
6D12 8A2F 9778 6F75 7051 8EA0
5345 6CE7 98D2 810E 8428 9212 644B 99BA 98AF 85A9
-6AD2
+6AD2 8644
96A1
6BE2 6122 63CC 585E 6BF8 816E 567B 9CC3 984B 9C13
55EE 8D5B 50FF 8CFD 7C3A
@@ -2003,8 +2000,8 @@ __DATA__
613C 614E 6939 7606 7F67 8703 8704 6EF2 92E0 762E
5814 698A 9C30
5347 751F 9629 544F 58F0 6598 6607 6CE9 72CC 82FC
-6B85 7272 73C4 965E 9679 7B19 6E66 713A 7525 924E
-8072 9F2A 9D7F
+680D 6B85 7272 73C4 965E 9679 7B19 6E66 713A 7525
+924E 8072 9F2A 9D7F
7EF3 61B4 7E69 8B5D
7701 771A 5057 6E3B
5723 80DC 6660 5270 76DB 5269 52DD 8CB9 5D4A 741E
@@ -2124,7 +2121,7 @@ __DATA__
9024 6EB9 8736
7411 55E6
4ED6 5B83 5979 7260 7942 8DBF 94CA 584C 6999 6EBB
-891F 5683
+891F 5683 95E7
8E79
5854 6E9A 5896 736D 9CCE 737A 9C28
4EA3 62D3 631E 72E7 95FC 5D09 6DBE 6428 8DF6 905D
@@ -2261,7 +2258,7 @@ __DATA__
5C72 74F2 54C7
6B6A 558E 7AF5
5D34
-5916 9861
+5916 591E 9861
5F2F 525C 5A60 5E35 5846 6E7E 873F 6F6B 8C4C 5F4E
58EA 7063
4E38 5213 6C4D 7EA8 8284 5B8C 5C8F 628F 73A9 7D08
@@ -2288,12 +2285,12 @@ __DATA__
84F6 912C 6F59 6F7F 78D1 9180 6FF0 934F 95C8 9BA0
7653 89B9 72A9 973A 6B08
5383 4F1F 4F2A 5C3E 7EAC 829B 82C7 59D4 709C 73AE
-6D27 5A13 6D58 8371 8BFF 5049 507D 5D23 68B6 75CF
-784A 9AA9 5D54 5FAB 6107 7325 8466 848D 9AAA 9AAB
-6690 6932 7152 744B 75FF 8172 8249 97EA 50DE 64B1
-78C8 9C94 5BEA 7DEF 853F 8AC9 8E13 97D1 9820 85B3
-5130 6FFB 9361 9BAA 58DD 7022 97D9 98B9 97E1 8624
-6596
+6D27 5A13 5C57 6D58 8371 8BFF 5049 507D 5D23 68B6
+75CF 784A 9AA9 5D54 5FAB 6107 7325 8466 848D 9AAA
+9AAB 6690 6932 7152 744B 75FF 8172 8249 97EA 50DE
+64B1 78C8 9C94 5BEA 7DEF 853F 8AC9 8E13 97D1 9820
+85B3 5130 6FFB 9361 9BAA 58DD 7022 97D9 98B9 97E1
+8624 6596
536B 4E3A 672A 4F4D 5473 82FF 70BA 754F 80C3 53DE
8ECE 5C09 83CB 8C13 5582 5AA6 6E2D 7232 715F 78A8
851A 873C 6170 71AD 729A 7DED 885B 61C0 748F 7F7B
@@ -2302,9 +2299,9 @@ __DATA__
6364 7140 732C 589B 7E05 875F 5DB6
6637 586D 6E29 6985 6B9F 6EAB 7465 8F92 761F 8570
8C71 8F3C 8F40 9CC1 97B0 9C1B 9C2E
-6587 5F63 7EB9 82A0 7086 739F 95FB 7D0B 8689 868A
-73F3 960C 741D 96EF 7612 805E 99BC 9B70 9CFC 9D0D
-87A1 95BA 95BF 87C1 95C5 9F24 95E6
+5301 6587 5F63 7EB9 82A0 7086 739F 95FB 7D0B 8689
+868A 73F3 960C 741D 96EF 7612 805E 99BC 9B70 9CFC
+9D0D 87A1 95BA 95BF 87C1 95C5 9F24 95E6
520E 543B 5FDF 6286 5461 80B3 7D0A 687D 8117 7A33
7A4F 7A69
95EE 598F 6C76 83AC 554F 6E02 63FE 6435 9850 74BA
@@ -2362,8 +2359,8 @@ __DATA__
856E 89A4 6231 9ED6 6232 78F6 8669 993C 9B29 7E6B
56B1 95DF 973C 5C6D 884B
897F 606F 6E13 6A72 72A0 7902 9BD1
-75A8 867E 8C3A 5084 9595 7146 7175 98AC 778E 8766
-9C15
+8672 75A8 867E 8C3A 5084 9595 7146 7175 98AC 778E
+8766 9C15
5323 4FA0 72CE 4FE0 5CE1 67D9 70A0 72ED 965C 5CFD
70DA 72F9 73E8 796B 7856 7FC8 823A 967F 7864 9050
656E 6687 7455 7B6A 821D 78AC 8F96 78CD 7E00 8578
@@ -2477,8 +2474,8 @@ __DATA__
8053 7D9A 84FF
5405 8F69 660D 5BA3 5F32 8ED2 688B 8C16 55A7 5847
5A97 6103 610B 63CE 8431 8432 6684 714A 7444 84D2
-777B 5107 79A4 7BAE 7FE7 8756 92D7 61C1 857F 8AE0
-8AFC 9379 99FD 77CE 7FFE 85FC 8610 8809 8B5E
+777B 5107 79A4 7BAE 7E07 7FE7 8756 92D7 61C1 857F
+8AE0 8AFC 9379 99FD 77CE 7FFE 85FC 8610 8809 8B5E
7384 73B9 75C3 60AC 65CB 7401 8701 5AD9 6F29 66B6
7487 6A88 74BF 61F8
54BA 9009 6645 70DC 9078 9848 7663 766C
@@ -2572,10 +2569,10 @@ __DATA__
9923 5688 64EB 66D7 77B8 9371 64EA 7217 790F 9391
9941 9D7A 9437 9768 9A5C 9E08
7237 4EAA 723A
-4E00 5F0C 4F0A 8863 533B 541A 58F1 4F9D 794E 54BF
-6D22 6098 7317 90FC 94F1 58F9 63D6 6B39 86DC 7995
-5ADB 6F2A 7A26 92A5 5B04 566B 5901 747F 9E65 7E44
-6AB9 6BC9 91AB 9EDF 8B69 9DD6 9EF3
+4E00 4E4A 5F0C 4F0A 8863 533B 541A 58F1 4F9D 794E
+54BF 6D22 6098 7317 90FC 94F1 58F9 63D6 6B39 86DC
+7995 5ADB 6F2A 7A26 92A5 5B04 566B 5901 747F 9E65
+7E44 6AB9 6BC9 91AB 9EDF 8B69 9DD6 9EF3
4E41 4EEA 531C 572F 5937 8FC6 519D 5B90 6C82 8BD2
4F87 6021 6CB6 72CB 886A 8FE4 9974 54A6 59E8 5CD3
605E 62F8 67C2 73C6 74F5 8D3B 8FFB 5BA7 5DF8 5F2C
@@ -2595,20 +2592,20 @@ __DATA__
9A7F 4FCB 5955 5E1F 5E20 5F08 67BB 6D02 6D42 73B4
75AB 7FBF 8875 8F76 5508 57BC 6092 6339 6359 6827
683A 6B2D 6D65 6D73 76CA 88A3 8C0A 966D 52DA 57F6
-57F8 60A5 639C 6BB9 7570 7F9B 7FCA 7FCC 8A32 8A33
-8C59 8C5B 9038 91F4 96BF 5E46 6561 6679 68ED 6B94
-6E59 7132 86E1 8A4D 8DC7 8EFC 9220 9AAE 4E84 517F
-610F 6EA2 7348 75EC 776A 7AE9 7F22 7FA9 8084 88D4
-88DB 8A63 52E9 5AD5 5ED9 698F 6F69 7617 8189 84FA
-8734 977E 99C5 5104 648E 69F8 6BC5 71A0
-71A4 71BC 761E 8ABC 9552 9E5D 9E62 9ED3 5293 571B
-58BF 5B11 5B1F 5DA7 61B6 61CC 66C0 6BAA 6FBA 71DA
-7631 7796 7A53 7E0A 8257 858F 87A0 8939 5BF1 6581
-66CE 6A8D 6B5D 71E1 71F1 7FF3 7FFC 81C6 8CF9 9BA8
-7654 85D9 85DD 8D00 93B0 9571 7E76 7E79 8C77 972C
-9BE3 9D82 9D83 7037 8619 8B6F 8B70 91B3 91B7 9950
-56C8 943F 9DC1 9DCA 61FF 897C 9A5B 9DE7 8649 9DFE
-8B9B 9F78
+57F8 60A5 639C 6BB9 7570 785B 7F9B 7FCA 7FCC 8A32
+8A33 8C59 8C5B 9038 91F4 96BF 5E46 6561 6679 68ED
+6B94 6E59 7132 86E1 8A4D 8DC7 8EFC 9220 9AAE 4E84
+517F 610F 6EA2 7348 75EC 776A 7AE9 7F22 7FA9 8084
+88D4 88DB 8A63 52E9 5AD5 5ED9 698F 6F69 7617 8189
+84FA 8734 977E 99C5 5104 648E 69F8 6BC5
+71A0 71A4 71BC 761E 8ABC 9552 9E5D 9E62 9ED3 5293
+571B 58BF 5B11 5B1F 5DA7 61B6 61CC 66C0 6BAA 6FBA
+71DA 7631 7796 7A53 7E0A 8257 858F 87A0 8939 5BF1
+6581 66CE 6A8D 6B5D 71E1 71F1 7FF3 7FFC 81C6 8CF9
+9BA8 7654 85D9 85DD 8D00 93B0 9571 7E76 7E79 8C77
+972C 9BE3 9D82 9D83 7037 8619 8B6F 8B70 91B3 91B7
+9950 56C8 943F 9DC1 9DCA 61FF 897C 9A5B 9DE7 8649
+9DFE 8B9B 9F78
8FB7 5307 8864 5B9C 7569 841F 692C 9D8D 7C4E
56D9 56E0 9625 9634 4F8C 5794 59FB 6D07 8335 836B
97F3 9A83 6836 6BB7 6C24 9670 51D0 79F5 88C0 94DF
@@ -2672,11 +2669,11 @@ __DATA__
7AFD 8201 8330 5A1B 5A2F 5A31 6859 72F3 8C00 9151
9980 6E14 8438 9685 96E9 9B5A 5823 582C 5D33 5D4E
5D5B 6109 63C4 6970 6E1D 6E61 756D 7862 8174 842E
-903E 9AAC 611A 6961 6986 6B48 724F 745C 8245 865E
-89CE 6F01 776E 7AAC 8206 8915 6B76 7FAD 854D 8753
-8ADB 96D3 9918 5B29 6F9E 89A6 8E30 6B5F 74B5 87B8
-8F3F 935D 8B23 9AC3 9BBD 65DF 7C45 9A1F 861B 9C05
-9DE0 9E06
+903E 9AAC 611A 65D5 6961 6986 6B48 724F 745C 8245
+865E 89CE 6F01 776E 7AAC 8206 8915 6B76 7FAD 854D
+8753 8ADB 96D3 9918 5B29 6F9E 89A6 8E30 6B5F 74B5
+87B8 8F3F 935D 8B23 9AC3 9BBD 65DF 7C45 9A1F 861B
+9C05 9DE0 9E06
4E0E 4E88 4F1B 5B87 5C7F 7FBD 96E8 4FC1 4FE3 79B9
8BED 5704 5CFF 7964 504A 532C 5709 5EBE 6554 9105
659E 842D 50B4 5BD9 6940 7440 7610 8207 8A9E 7AB3
@@ -2687,14 +2684,14 @@ __DATA__
7821 94B0 9884 5590 57DF 5809 6086 60D0 6B32 6DE2
6DEF 8C15 9033 9608 5585 55A9 55BB 5A80 5BD3 5EBD
5FA1 68DB 68DC 68EB 7134 7419 77DE 7872 88D5 9047
-98EB 99AD 9E46 6108 6EEA 715C 7A22 7F6D 84AE 84E3
-8A89 923A 9810 5AD7 5D8E 622B 6BD3 7344 7609 7DCE
-871F 872E 8F0D 9289 564A 617E 6F4F 7A36 84F9 8581
-8C6B 9079 92CA 9CFF 6FA6 71CF 71E0 8577 8AED 9325
-95BE 9D25 9D2A 5125 7907 79A6 9B4A 9E6C 7652 7916
-791C 7A65 7BFD 7E58 91A7 9D52 6AF2 9947 8B7D 8F5D
-942D 9731 6B0E 9A48 9B3B 7C5E 9C4A 9DF8 9E12 6B1D
-9FA5 8EC9 9B30 9B31 706A 7C72 7229
+98EB 99AD 9E46 6108 6EEA 715C 7A22 7F6D 8248 84AE
+84E3 8A89 923A 9810 5AD7 5D8E 622B 6BD3 7344 7609
+7DCE 871F 872E 8F0D 9289 564A 617E 6F4F 7A36 84F9
+8581 8C6B 9079 92CA 9CFF 6FA6 71CF 71E0 8577 8AED
+9325 95BE 9D25 9D2A 5125 7907 79A6 9B4A 9E6C 7652
+7916 791C 7A65 7BFD 7E58 91A7 9D52 6AF2 9947 8B7D
+8F5D 942D 9731 6B0E 9A48 9B3B 7C5E 9C4A 9DF8 9E12
+6B1D 9FA5 8EC9 9B30 9B31 706A 7C72 7229
6327 8362 6F9A 9BF2
56E6 9E22 5248 51A4 6081 7722 9E33 5BC3 6E01 6E06
6E0A 6E15 60CC 6DF5 847E 68E9 84AC 870E 88F7 9E53
@@ -2838,12 +2835,12 @@ __DATA__
9D44 7E54 8635 9F05
6267 4F84 59B7 76F4 59EA 5024 503C 8040 91DE 57F4
57F7 6DD4 804C 8CAD 690D 6B96 7286 7983 7D77 8901
-8DD6 74E1 9244 588C 646D 99BD 5B02 6179 6F10 8E2F
-6A34 81B1 5128 7E36 8077 87D9 8E60 8EC4 8E91
+8DD6 55ED 74E1 9244 588C 646D 99BD 5B02 6179 6F10
+8E2F 6A34 81B1 5128 7E36 8077 87D9 8E60 8EC4 8E91
5902 6B62 53EA 52A7 65E8 962F 5740 5741 5E0B 627A
-6C66 6C9A 7EB8 82B7 62A7 7949 54AB 6049 6307 67B3
-6D14 780B 8879 8F75 6DFD 75BB 7D19 8A28 8DBE 8EF9
-9EF9 916F 85E2 8967
+6C66 6C9A 7EB8 82B7 603E 62A7 7949 54AB 6049 6307
+67B3 6D14 780B 8879 8F75 6DFD 75BB 7D19 8A28 8DBE
+8EF9 9EF9 916F 85E2 8967
9624 81F3 8296 5FD7 5FEE 627B 8C78 5236 5394 5781
5E19 5E1C 6CBB 7099 8D28 8FE3 90C5 5CD9 5EA2 5EA4
6303 67E3 6809 6D37 7951 965F 5A21 5F8F 631A 664A
@@ -2921,19 +2918,19 @@ __DATA__
7C71
5285
7AA7
-5B5C 830A 5179 54A8 59D5 59FF 8332 6825 7386 7D0E
-8D40 8D44 6DC4 79F6 7F01 8C18 55DE 5B73 5D6B 6914
-6E7D 6ECB 7CA2 8458 8F8E 9111 5B76 798C 89DC 8A3E
-8CB2 8CC7 8D91 9531 7A35 7DC7 922D 9543 9F87 8F1C
-9F12 6FAC 8AEE 8DA6 8F3A 9319 9AED 9CBB 937F 93A1
-74BE 983F 983E 9BD4 9D85 9F4D 9C26
+4E72 5B5C 830A 5179 54A8 59D5 59FF 8332 6825 7386
+7D0E 8D40 8D44 6DC4 79F6 7F01 8C18 55DE 5B73 5D6B
+6914 6E7D 6ECB 7CA2 8458 8F8E 9111 5B76 798C 89DC
+8A3E 8CB2 8CC7 8D91 9531 7A35 7DC7 922D 9543 9F87
+8F1C 9F12 6FAC 8AEE 8DA6 8F3A 9319 9AED 9CBB 937F
+93A1 74BE 983F 983E 9BD4 9D85 9F4D 9C26
84FB
4ED4 5407 59C9 59CA 674D 77F7 79C4 80CF 5470 79ED
7C7D 8014 8678 7B2B 6893 91E8 5559 7D2B 6ED3 8A3F
699F
5B57 81EA 8293 8321 5033 525A 6063 7278 6E0D 7725
7726 80D4 80FE 6F2C
-5B50 5D30 55ED 6A74
+5B50 5D30 6A74
5B97 5027 7EFC 9A94 582B 5D4F 5D55 60FE 68D5 7323
8159 847C 6721 6936 5D78 7A2F 7D9C 7DC3 71A7 7DF5
7FEA 876C 8E28 8E2A 78EB 9350 8C75 8E64 9A0C 9B03
diff --git a/cpan/Unicode-Collate/Collate/Locale.pm b/cpan/Unicode-Collate/Collate/Locale.pm
index 6e23bff526..0607ad5b1b 100644
--- a/cpan/Unicode-Collate/Collate/Locale.pm
+++ b/cpan/Unicode-Collate/Collate/Locale.pm
@@ -4,7 +4,7 @@ use strict;
use Carp;
use base qw(Unicode::Collate);
-our $VERSION = '0.81';
+our $VERSION = '0.84';
use File::Spec;
@@ -12,37 +12,56 @@ use File::Spec;
my $PL_EXT = '.pl';
my %LocaleFile = map { ($_, $_) } qw(
- af ar as az be bg ca cs cy da eo es et fi fil fo fr gu
- ha haw hi hr hu hy ig is ja kk kl kn ko kok ln lt lv
- mk ml mr mt nb nn nso om or pa pl ro ru se sk sl sq sv
- tn to tr uk vi wo yo zh
+ af ar as az be bg ca cs cy da eo es et fa fi fil fo fr
+ gu ha haw hi hr hu hy ig is ja kk kl kn ko kok ln lt lv
+ mk ml mr mt nb nn nso om or pa pl ro ru se si sk sl sq
+ sr sv ta te th tn to tr uk ur vi wae wo yo zh
);
$LocaleFile{'default'} = '';
# aliases
- $LocaleFile{'bs'} = 'hr';
- $LocaleFile{'sr'} = 'ru';
+ $LocaleFile{'bs'} = 'hr';
+ $LocaleFile{'sr_Latn'} = 'hr';
# short file names
$LocaleFile{'de__phonebook'} = 'de_phone';
$LocaleFile{'es__traditional'} = 'es_trad';
$LocaleFile{'fi__phonebook'} = 'fi_phone';
+ $LocaleFile{'si__dictionary'} = 'si_dict';
+ $LocaleFile{'sv__reformed'} = 'sv_refo';
$LocaleFile{'zh__big5han'} = 'zh_big5';
$LocaleFile{'zh__gb2312han'} = 'zh_gb';
$LocaleFile{'zh__pinyin'} = 'zh_pin';
$LocaleFile{'zh__stroke'} = 'zh_strk';
+my %TypeAlias = qw(
+ phone phonebook
+ phonebk phonebook
+ dict dictionary
+ reform reformed
+ trad traditional
+ big5 big5han
+ gb2312 gb2312han
+);
+
sub _locale {
my $locale = shift;
if ($locale) {
$locale = lc $locale;
$locale =~ tr/\-\ \./_/;
- $locale =~ s/_phone(?:bk)?\z/_phonebook/;
- $locale =~ s/_trad\z/_traditional/;
- $locale =~ s/_big5\z/_big5han/;
- $locale =~ s/_gb2312\z/_gb2312han/;
+ $locale =~ s/_([0-9a-z]+)\z/$TypeAlias{$1} ?
+ "_$TypeAlias{$1}" : "_$1"/e;
$LocaleFile{$locale} and return $locale;
- my ($l,$t,$v) = split(/_/, $locale.'__');
- for my $loc ("${l}_${t}_$v", "${l}_$t", "${l}__$v", "${l}__$t", $l) {
+ my @code = split /_/, $locale;
+ my $lan = shift @code;
+ my $scr = @code && length $code[0] == 4 ? ucfirst shift @code : '';
+ my $reg = @code && length $code[0] < 4 ? uc shift @code : '';
+ my $var = @code ? shift @code : '';
+
+ for my $loc (
+ "${lan}_${scr}_${reg}_$var", "${lan}_${scr}_$var",
+ "${lan}_${reg}_$var", "${lan}__$var",
+ "${lan}_${scr}_${reg}", "${lan}_${scr}",
+ "${lan}_${reg}", $lan) {
$LocaleFile{$loc} and return $loc;
}
}
@@ -93,10 +112,10 @@ locale based CLDR
af 2.0 = 1.8.1
ar 2.0
as 2.0 = 1.8.1
-az 2.0 = 1.8.1
+az 2.0 = 1.8.1 (type="standard")
be 2.0
bg 2.0
-bs 2.0
+bs 2.0 (alias source="hr")
ca 2.0 = 1.8.1 (alt="proposed" type="standard")
cs 2.0 = 1.8.1 (type="standard")
cy 2.0 = 1.8.1
@@ -106,6 +125,7 @@ eo 2.0 = 1.8.1
es 2.0 (type="standard")
es__traditional 2.0 = 1.8.1 (type="traditional")
et 2.0 = 1.8.1
+fa 2.0 = 1.8.1
fi 2.0 = 1.8.1 (type="standard" alt="proposed")
fi__phonebook 2.0 = 1.8.1 (type="phonebook")
fil 2.0 (type="standard") = 1.8.1
@@ -114,15 +134,15 @@ fr 2.0 (fr_CA, backwards="on")
gu 2.0 (type="standard")
ha 2.0
haw 2.0 = 1.8.1
-hi 2.0
-hr 2.0
+hi 2.0 (type="standard")
+hr 2.0 (type="standard")
hu 2.0 = 1.8.1 (alt="proposed" type="standard")
hy 2.0 = 1.8.1
ig 2.0 = 1.8.1
-is 2.0 = 1.8.1
+is 2.0 = 1.8.1 (type="standard")
ja 2.0 = 1.8.1 (type="standard")
kk 2.0
-kl 2.0 = 1.8.1
+kl 2.0 = 1.8.1 (type="standard")
kn 2.0 (type="standard")
ko 2.0 = 1.8.1 (type="standard")
kok 2.0 = 1.8.1
@@ -142,25 +162,36 @@ pa 2.0 = 1.8.1
pl 2.0 = 1.8.1
ro 2.0 (type="standard")
ru 2.0
-se
-sk
-sl
-sq
-sr
-sv
-tn
-to
-tr
-uk
-vi
-wo
-yo
-zh
-zh__big5han
-zh__gb2312han
-zh__pinyin
-zh__stroke
+se 2.0 = 1.8.1 (type="standard")
+si 2.0 (type="standard")
+si__dictionary 2.0 (type="dictionary")
+sk 2.0 (type="standard")
+sl 2.0 = 1.8.1 (type="standard" alt="proposed")
+sq 2.0 = 1.8.1 (alt="proposed" type="standard")
+sr 2.0 (type="standard")
+sr_Latn 2.0 = 1.8.1 (alias source="hr")
+sv 2.0 (type="standard")
+sv__reformed 2.0 = 1.8.1 (type="reformed")
+ta 2.0
+te 2.0
+th 2.0 (type="standard")
+tn 2.0 = 1.8.1
+to 2.0 = 1.8.1 (type="standard" alt="proposed")
+tr 2.0 = 1.8.1 (type="standard")
+uk 2.0
+ur 2.0
+vi 2.0 = 1.8.1
+wae 2.0
+wo 1.8.1
+yo 2.0 = 1.8.1
+zh 2.0 = 1.8.1 (type="standard")
+zh__big5han 2.0 = 1.8.1 (type="big5han")
+zh__gb2312han 2.0 = 1.8.1 (type="gb2312han")
+zh__pinyin 2.0 (type='pinyin' alt='short') [*]
+zh__stroke 2.0 = 1.9.1 (type='stroke' alt='short') [*]
----------------------------------------------------------------------------
+ [*] tailored latin letters and unified ideographs only.
+ omitted the tailoring for some characters with tertiary diff.
=head1 NAME
@@ -197,21 +228,23 @@ The C<new> method returns a collator object.
A parameter list for the constructor is a hash, which can include
a special key C<locale> and its value (case-insensitive) standing
-for a two-letter language code (ISO-639) like C<'en'> for English.
+for a Unicode base language code (two or three-letter).
For example, C<Unicode::Collate::Locale-E<gt>new(locale =E<gt> 'FR')>
returns a collator tailored for French.
-C<$locale_name> may be suffixed with a territory(country)
-code or a variant code, which are separated with C<'_'>.
+C<$locale_name> may be suffixed with a Unicode script code (four-letter),
+a Unicode region code, a Unicode language variant code. These codes are
+case-insensitive, and separated with C<'_'> or C<'-'>.
E.g. C<en_US> for English in USA,
-C<es_ES_traditional> for Spanish in Spain (Traditional),
+C<az_Cyrl> for Azerbaijani in Cyrillic script,
+C<es_ES_traditional> for Spanish in Spain (Traditional).
If C<$localename> is not defined,
fallback is selected in the following order:
- 1. language_territory_variant
- 2. language_territory
- 3. language__variant
+ 1. language with a variant code
+ 2. language with a script code
+ 3. language with a region code
4. language
5. default
@@ -265,7 +298,7 @@ this method returns a string C<'default'> meaning no special tailoring.
=head2 A list of tailorable locales
locale name description
- ----------------------------------------------------------
+ --------------------------------------------------------------
af Afrikaans
ar Arabic
as Assamese
@@ -282,6 +315,7 @@ this method returns a string C<'default'> meaning no special tailoring.
es Spanish
es__traditional Spanish ('ch' and 'll' as a grapheme)
et Estonian
+ fa Persian
fi Finnish (v and w are primary equal)
fi__phonebook Finnish (v and w as separate characters)
fil Filipino
@@ -319,16 +353,25 @@ this method returns a string C<'default'> meaning no special tailoring.
ro Romanian
ru Russian
se Northern Sami
+ si Sinhala
+ si__dictionary Sinhala (U+0DA5 = U+0DA2,0DCA,0DA4)
sk Slovak
sl Slovenian
sq Albanian
sr Serbian
- sv Swedish
+ sr_Latn Serbian in Latin (tailored as Croatian)
+ sv Swedish (v and w are primary equal)
+ sv__reformed Swedish (v and w as separate characters)
+ ta Tamil
+ te Telugu
+ th Thai
tn Tswana
to Tonga
tr Turkish
uk Ukrainian
+ ur Urdu
vi Vietnamese
+ wae Walser
wo Wolof
yo Yoruba
zh Chinese
@@ -336,7 +379,7 @@ this method returns a string C<'default'> meaning no special tailoring.
zh__gb2312han Chinese (ideographs: GB-2312 order)
zh__pinyin Chinese (ideographs: pinyin order)
zh__stroke Chinese (ideographs: stroke order)
- ----------------------------------------------------------
+ --------------------------------------------------------------
Locales according to the default UCA rules include
chr (Cherokee),
diff --git a/cpan/Unicode-Collate/Collate/Locale/fa.pl b/cpan/Unicode-Collate/Collate/Locale/fa.pl
new file mode 100644
index 0000000000..c413106150
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/fa.pl
@@ -0,0 +1,49 @@
++{
+ entry => <<'ENTRY', # for DUCET v6.0.0
+064E ; [.0000.00A2.0002.064E] # ARABIC FATHA
+0650 ; [.0000.00A3.0002.0650] # ARABIC KASRA
+064F ; [.0000.00A4.0002.064F] # ARABIC DAMMA
+064B ; [.0000.00A5.0002.064B] # ARABIC FATHATAN
+064D ; [.0000.00A6.0002.064D] # ARABIC KASRATAN
+064C ; [.0000.00A7.0002.064C] # ARABIC DAMMATAN
+0622 ; [.1C45.0020.0002.0622][.FFF1.0000.0000.0000] # ARABIC LETTER ALEF WITH MADDA ABOVE
+0627 0653 ; [.1C45.0020.0002.0622][.FFF1.0000.0000.0000] # ARABIC LETTER ALEF WITH MADDA ABOVE
+0671 ; [.1C46.0021.0002.0671] # ARABIC LETTER ALEF WASLA
+0621 ; [.1C46.0020.0002.0621][.FFF1.0000.0000.0000] # ARABIC LETTER HAMZA
+0623 ; [.1C46.0021.0002.0623][.FFF1.0000.0000.0000] # ARABIC LETTER ALEF WITH HAMZA ABOVE
+0627 0654 ; [.1C46.0021.0002.0623][.FFF1.0000.0000.0000] # ARABIC LETTER ALEF WITH HAMZA ABOVE
+0672 ; [.1C46.0022.0002.0672][.FFF1.0000.0000.0000] # ARABIC LETTER ALEF WITH WAVY HAMZA ABOVE
+0625 ; [.1C46.0023.0002.0625][.FFF1.0000.0000.0000] # ARABIC LETTER ALEF WITH HAMZA BELOW
+0627 0655 ; [.1C46.0023.0002.0625][.FFF1.0000.0000.0000] # ARABIC LETTER ALEF WITH HAMZA BELOW
+0673 ; [.1C46.0024.0002.0673][.FFF1.0000.0000.0000] # ARABIC LETTER ALEF WITH WAVY HAMZA BELOW
+0624 ; [.1C46.0025.0002.0624][.FFF1.0000.0000.0000] # ARABIC LETTER WAW WITH HAMZA ABOVE
+0648 0654 ; [.1C46.0025.0002.0624][.FFF1.0000.0000.0000] # ARABIC LETTER WAW WITH HAMZA ABOVE
+06CC 0654 ; [.1C46.0026.0002.06CC][.FFF1.0000.0000.0000] # <ARABIC LETTER FARSI YEH, ARABIC HAMZA ABOVE>
+0649 0654 ; [.1C46.0026.0003.0649][.FFF1.0000.0000.0000] # <ARABIC LETTER ALEF MAKSURA, ARABIC HAMZA ABOVE>
+0626 ; [.1C46.0026.0004.0626][.FFF1.0000.0000.0000] # ARABIC LETTER YEH WITH HAMZA ABOVE
+064A 0654 ; [.1C46.0026.0004.0626][.FFF1.0000.0000.0000] # ARABIC LETTER YEH WITH HAMZA ABOVE
+06AA ; [.1CB2.0021.0002.06AA] # ARABIC LETTER SWASH KAF
+06AB ; [.1CB2.0022.0002.06AB] # ARABIC LETTER KAF WITH RING
+0643 ; [.1CB2.0023.0002.0643] # ARABIC LETTER KAF
+06AC ; [.1CB2.0024.0002.06AC] # ARABIC LETTER KAF WITH DOT ABOVE
+06AD ; [.1CB2.0025.0002.06AD] # ARABIC LETTER NG
+06AE ; [.1CB2.0026.0002.06AE] # ARABIC LETTER KAF WITH THREE DOTS BELOW
+0647 ; [.1CE5.0020.0002.0647][.FFF1.0000.0000.0000] # ARABIC LETTER HEH
+06D5 ; [.1CE5.0021.0002.06D5][.FFF1.0000.0000.0000] # ARABIC LETTER AE
+06C1 ; [.1CE5.0022.0002.06C1][.FFF1.0000.0000.0000] # ARABIC LETTER HEH GOAL
+06C2 ; [.1CE5.0022.0002.06C1][.FFF1.0000.0000.0000][.0000.00B1.0002.0654] # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+0629 ; [.1CE5.0023.0002.0629][.FFF1.0000.0000.0000] # ARABIC LETTER TEH MARBUTA
+06C3 ; [.1CE5.0024.0002.06C3][.FFF1.0000.0000.0000] # ARABIC LETTER TEH MARBUTA GOAL
+06C0 ; [.1CE5.0025.0002.06C0][.FFF1.0000.0000.0000] # ARABIC LETTER HEH WITH YEH ABOVE
+06D5 0654 ; [.1CE5.0025.0002.06C0][.FFF1.0000.0000.0000] # ARABIC LETTER HEH WITH YEH ABOVE
+06BE ; [.1CE5.0026.0002.06BE][.FFF1.0000.0000.0000] # ARABIC LETTER HEH DOACHASHMEE
+0649 ; [.1CEA.0021.0002.0649] # ARABIC LETTER ALEF MAKSURA
+06D2 ; [.1CEA.0022.0002.06D2] # ARABIC LETTER YEH BARREE
+06D3 ; [.1CEA.0022.0002.06D2][.0000.00B1.0002.0654] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+064A ; [.1CEA.0023.0002.064A] # ARABIC LETTER YEH
+06D0 ; [.1CEA.0024.0002.06D0] # ARABIC LETTER E
+06D1 ; [.1CEA.0025.0002.06D1] # ARABIC LETTER YEH WITH THREE DOTS BELOW
+06CD ; [.1CEA.0026.0002.06CD] # ARABIC LETTER YEH WITH TAIL
+06CE ; [.1CEA.0027.0002.06CE] # ARABIC LETTER YEH WITH SMALL V
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/si.pl b/cpan/Unicode-Collate/Collate/Locale/si.pl
new file mode 100644
index 0000000000..0e59bb931c
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/si.pl
@@ -0,0 +1,8 @@
++{
+ entry => <<'ENTRY', # for DUCET v6.0.0
+0D82 ; [.21F7.0020.0002.0D82][.FFF1.0000.0000.0000] # SINHALA SIGN ANUSVARAYA
+0D83 ; [.21F7.0020.0002.0D83][.FFF2.0000.0000.0000] # SINHALA SIGN VISARGAYA
+0DA5 ; [.2202.0020.0002.0DA5] # SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
+0DA4 ; [.2203.0020.0002.0DA4] # SINHALA LETTER TAALUJA NAASIKYAYA
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/si_dict.pl b/cpan/Unicode-Collate/Collate/Locale/si_dict.pl
new file mode 100644
index 0000000000..6b1b36a631
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/si_dict.pl
@@ -0,0 +1,7 @@
++{
+ entry => <<'ENTRY', # for DUCET v6.0.0
+0D82 ; [.21F7.0020.0002.0D82][.FFF1.0000.0000.0000] # SINHALA SIGN ANUSVARAYA
+0D83 ; [.21F7.0020.0002.0D83][.FFF2.0000.0000.0000] # SINHALA SIGN VISARGAYA
+0DA5 ; [.2200.0020.0002.0DA2][.2232.0020.0002.0DCA][.2202.0021.0002.0DA5] # SINHALA LETTER TAALUJA SANYOOGA NAAKSIKYAYA
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/sk.pl b/cpan/Unicode-Collate/Collate/Locale/sk.pl
index b9b27ad3ee..73c2e46ac9 100644
--- a/cpan/Unicode-Collate/Collate/Locale/sk.pl
+++ b/cpan/Unicode-Collate/Collate/Locale/sk.pl
@@ -28,6 +28,10 @@
1ED4 ; [.1725.0020.0008.00D4][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
1ED9 ; [.1725.0020.0002.00F4][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
1ED8 ; [.1725.0020.0008.00D4][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+0159 ; [.1771.0020.0002.0159] # LATIN SMALL LETTER R WITH CARON
+0072 030C ; [.1771.0020.0002.0159] # LATIN SMALL LETTER R WITH CARON
+0158 ; [.1771.0020.0008.0158] # LATIN CAPITAL LETTER R WITH CARON
+0052 030C ; [.1771.0020.0008.0158] # LATIN CAPITAL LETTER R WITH CARON
0161 ; [.17A7.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
0073 030C ; [.17A7.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
0160 ; [.17A7.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
diff --git a/cpan/Unicode-Collate/Collate/Locale/sl.pl b/cpan/Unicode-Collate/Collate/Locale/sl.pl
index d1281feffe..d9a4ae4609 100644
--- a/cpan/Unicode-Collate/Collate/Locale/sl.pl
+++ b/cpan/Unicode-Collate/Collate/Locale/sl.pl
@@ -1,5 +1,4 @@
+{
-# c-acute not included
entry => <<'ENTRY', # for DUCET v6.0.0
010D ; [.15D2.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
0063 030C ; [.15D2.0020.0002.010D] # LATIN SMALL LETTER C WITH CARON
diff --git a/cpan/Unicode-Collate/Collate/Locale/sr.pl b/cpan/Unicode-Collate/Collate/Locale/sr.pl
new file mode 100644
index 0000000000..db010969bb
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/sr.pl
@@ -0,0 +1,48 @@
++{
+ suppress => [0x0410, 0x0430, 0x04D8, 0x04D9, 0x0413, 0x0433, 0x0415, 0x0435,
+ 0x0416, 0x0436, 0x0417, 0x0437, 0x0418, 0x0438, 0x0406, 0x0456,
+ 0x041E, 0x043E, 0x04E8, 0x04E9, 0x041A, 0x043A, 0x0423, 0x0443,
+ 0x0427, 0x0447, 0x042B, 0x044B, 0x042D, 0x044D, 0x0474, 0x0475],
+ entry => <<'ENTRY', # for DUCET v6.0.0
+04D1 ; [.1943.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
+04D0 ; [.1943.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
+04D3 ; [.1943.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D2 ; [.1943.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04DB ; [.194F.0020.0002.04D9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DA ; [.194F.0020.0008.04D8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+0453 ; [.1963.0020.0002.0433][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER GJE
+0403 ; [.1963.0020.0008.0413][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER GJE
+04D7 ; [.198B.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
+04D6 ; [.198B.0020.0008.0415][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER IE WITH BREVE
+04DD ; [.1997.0020.0002.0436][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DC ; [.1997.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DF ; [.19A4.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04DE ; [.19A4.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+04E5 ; [.19BC.0020.0002.0438][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER I WITH DIAERESIS
+04E4 ; [.19BC.0020.0008.0418][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+0457 ; [.19C8.0020.0002.0456][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YI
+0407 ; [.19C8.0020.0008.0406][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YI
+0439 ; [.19BC.0020.0002.0438][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT I
+0419 ; [.19BC.0020.0008.0418][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT I
+04E7 ; [.1A29.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E6 ; [.1A29.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04EB ; [.1A31.0020.0002.04E9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EA ; [.1A31.0020.0008.04E8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+045C ; [.19DA.0020.0002.043A][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER KJE
+040C ; [.19DA.0020.0008.041A][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER KJE
+045E ; [.1A6B.0020.0002.0443][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT U
+040E ; [.1A6B.0020.0008.0423][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT U
+04F1 ; [.1A6B.0020.0002.0443][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F0 ; [.1A6B.0020.0008.0423][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F3 ; [.1A6B.0020.0002.0443][.0000.004D.0002.030B] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F2 ; [.1A6B.0020.0008.0423][.0000.004D.0002.030B] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F5 ; [.1ABE.0020.0002.0447][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F4 ; [.1ABE.0020.0008.0427][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F9 ; [.1AF1.0020.0002.044B][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+04F8 ; [.1AF1.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04ED ; [.1B06.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EC ; [.1B06.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+0477 ; [.1B3C.0020.0002.0475][.0000.0065.0002.030F] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0476 ; [.1B3C.0020.0008.0474][.0000.0065.0002.030F] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/sv.pl b/cpan/Unicode-Collate/Collate/Locale/sv.pl
index 1243167fc3..de95d5fae3 100644
--- a/cpan/Unicode-Collate/Collate/Locale/sv.pl
+++ b/cpan/Unicode-Collate/Collate/Locale/sv.pl
@@ -8,8 +8,8 @@
00D0 ; [.15E4.0022.0008.00D0] # LATIN CAPITAL LETTER ETH
00FE ; [.17C9.0020.0003.00FE][.1667.0020.0003.00FE] # LATIN SMALL LETTER THORN
00DE ; [.17C9.0020.0009.00DE][.1667.0020.0009.00DE] # LATIN CAPITAL LETTER THORN
-0077 ; [.1812.0020.0003.0077] # LATIN SMALL LETTER W
-0057 ; [.1812.0020.0009.0057] # LATIN CAPITAL LETTER W
+0077 ; [.1812.0021.0002.0077] # LATIN SMALL LETTER W
+0057 ; [.1812.0021.0008.0057] # LATIN CAPITAL LETTER W
00FC ; [.1833.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
0075 0308 ; [.1833.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
00DC ; [.1833.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
diff --git a/cpan/Unicode-Collate/Collate/Locale/sv_refo.pl b/cpan/Unicode-Collate/Collate/Locale/sv_refo.pl
new file mode 100644
index 0000000000..f3a867fc33
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/sv_refo.pl
@@ -0,0 +1,84 @@
++{
+ entry => <<'ENTRY', # for DUCET v6.0.0
+0111 ; [.15E4.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0064 0335 ; [.15E4.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0110 ; [.15E4.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+0044 0335 ; [.15E4.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+00F0 ; [.15E4.0022.0002.00F0] # LATIN SMALL LETTER ETH
+00D0 ; [.15E4.0022.0008.00D0] # LATIN CAPITAL LETTER ETH
+00FE ; [.17C9.0020.0003.00FE][.1667.0020.0003.00FE] # LATIN SMALL LETTER THORN
+00DE ; [.17C9.0020.0009.00DE][.1667.0020.0009.00DE] # LATIN CAPITAL LETTER THORN
+00FC ; [.1833.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1833.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.1833.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1833.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+01DC ; [.1833.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB ; [.1833.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01D8 ; [.1833.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7 ; [.1833.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D6 ; [.1833.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5 ; [.1833.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01DA ; [.1833.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9 ; [.1833.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+0171 ; [.1833.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0075 030B ; [.1833.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0170 ; [.1833.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0055 030B ; [.1833.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+00E5 ; [.18B9.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+0061 030A ; [.18B9.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+00C5 ; [.18B9.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+0041 030A ; [.18B9.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+212B ; [.18B9.0020.0008.00C5] # ANGSTROM SIGN
+01FB ; [.18B9.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FA ; [.18B9.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+00E4 ; [.18BA.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+0061 0308 ; [.18BA.0020.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+00C4 ; [.18BA.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0041 0308 ; [.18BA.0020.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+01DF ; [.18BA.0020.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01DE ; [.18BA.0020.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+00E6 ; [.18BA.0021.0002.00E6] # LATIN SMALL LETTER AE
+00C6 ; [.18BA.0021.0008.00C6] # LATIN CAPITAL LETTER AE
+1D2D ; [.18BA.0021.0014.1D2D] # MODIFIER LETTER CAPITAL AE
+01FD ; [.18BA.0021.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
+01FC ; [.18BA.0021.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
+01E3 ; [.18BA.0021.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
+01E2 ; [.18BA.0021.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
+0119 ; [.18BA.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0065 0328 ; [.18BA.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0118 ; [.18BA.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+0045 0328 ; [.18BA.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+00F6 ; [.18BB.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.18BB.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6 ; [.18BB.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.18BB.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+022B ; [.18BB.0020.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022A ; [.18BB.0020.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+00F8 ; [.18BB.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+006F 0338 ; [.18BB.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+00D8 ; [.18BB.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+004F 0338 ; [.18BB.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+01FF ; [.18BB.0021.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+01FE ; [.18BB.0021.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+0151 ; [.18BB.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+006F 030B ; [.18BB.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0150 ; [.18BB.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+004F 030B ; [.18BB.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0153 ; [.18BB.0023.0002.0153] # LATIN SMALL LIGATURE OE
+0152 ; [.18BB.0023.0008.0152] # LATIN CAPITAL LIGATURE OE
+00F4 ; [.18BB.0024.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+006F 0302 ; [.18BB.0024.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+00D4 ; [.18BB.0024.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+004F 0302 ; [.18BB.0024.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+1ED3 ; [.18BB.0024.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED2 ; [.18BB.0024.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED1 ; [.18BB.0024.0002.00F4][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED0 ; [.18BB.0024.0008.00D4][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED7 ; [.18BB.0024.0002.00F4][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED6 ; [.18BB.0024.0008.00D4][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED5 ; [.18BB.0024.0002.00F4][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED4 ; [.18BB.0024.0008.00D4][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED9 ; [.18BB.0024.0002.00F4][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED8 ; [.18BB.0024.0008.00D4][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/ta.pl b/cpan/Unicode-Collate/Collate/Locale/ta.pl
new file mode 100644
index 0000000000..ef5223e854
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/ta.pl
@@ -0,0 +1,30 @@
++{
+ entry => <<'ENTRY', # for DUCET v6.0.0
+0B82 ; [.20E7.0020.0002.0B82][.FFF1.0000.0000.0000] # TAMIL SIGN ANUSVARA
+0B95 0BCD ; [.20E8.0020.0002.0B95][.FFF1.0000.0000.0000] # <TAMIL LETTER KA, TAMIL SIGN VIRAMA>
+0B99 0BCD ; [.20E9.0020.0002.0B99][.FFF1.0000.0000.0000] # <TAMIL LETTER NGA, TAMIL SIGN VIRAMA>
+0B9A 0BCD ; [.20EA.0020.0002.0B9A][.FFF1.0000.0000.0000] # <TAMIL LETTER CA, TAMIL SIGN VIRAMA>
+0B9E 0BCD ; [.20EB.0020.0002.0B9E][.FFF1.0000.0000.0000] # <TAMIL LETTER NYA, TAMIL SIGN VIRAMA>
+0B9F 0BCD ; [.20EC.0020.0002.0B9F][.FFF1.0000.0000.0000] # <TAMIL LETTER TTA, TAMIL SIGN VIRAMA>
+0BA3 0BCD ; [.20ED.0020.0002.0BA3][.FFF1.0000.0000.0000] # <TAMIL LETTER NNA, TAMIL SIGN VIRAMA>
+0BA4 0BCD ; [.20EE.0020.0002.0BA4][.FFF1.0000.0000.0000] # <TAMIL LETTER TA, TAMIL SIGN VIRAMA>
+0BA8 0BCD ; [.20EF.0020.0002.0BA8][.FFF1.0000.0000.0000] # <TAMIL LETTER NA, TAMIL SIGN VIRAMA>
+0BAA 0BCD ; [.20F0.0020.0002.0BAA][.FFF1.0000.0000.0000] # <TAMIL LETTER PA, TAMIL SIGN VIRAMA>
+0BAE 0BCD ; [.20F1.0020.0002.0BAE][.FFF1.0000.0000.0000] # <TAMIL LETTER MA, TAMIL SIGN VIRAMA>
+0BAF 0BCD ; [.20F2.0020.0002.0BAF][.FFF1.0000.0000.0000] # <TAMIL LETTER YA, TAMIL SIGN VIRAMA>
+0BB0 0BCD ; [.20F3.0020.0002.0BB0][.FFF1.0000.0000.0000] # <TAMIL LETTER RA, TAMIL SIGN VIRAMA>
+0BB2 0BCD ; [.20F4.0020.0002.0BB2][.FFF1.0000.0000.0000] # <TAMIL LETTER LA, TAMIL SIGN VIRAMA>
+0BB5 0BCD ; [.20F5.0020.0002.0BB5][.FFF1.0000.0000.0000] # <TAMIL LETTER VA, TAMIL SIGN VIRAMA>
+0BB4 0BCD ; [.20F6.0020.0002.0BB4][.FFF1.0000.0000.0000] # <TAMIL LETTER LLLA, TAMIL SIGN VIRAMA>
+0BB3 0BCD ; [.20F7.0020.0002.0BB3][.FFF1.0000.0000.0000] # <TAMIL LETTER LLA, TAMIL SIGN VIRAMA>
+0BB1 0BCD ; [.20F8.0020.0002.0BB1][.FFF1.0000.0000.0000] # <TAMIL LETTER RRA, TAMIL SIGN VIRAMA>
+0BA9 0BCD ; [.20F9.0020.0002.0BA9][.FFF1.0000.0000.0000] # <TAMIL LETTER NNNA, TAMIL SIGN VIRAMA>
+0B9C 0BCD ; [.20FA.0020.0002.0B9C][.FFF1.0000.0000.0000] # <TAMIL LETTER JA, TAMIL SIGN VIRAMA>
+0BB6 0BCD ; [.20FB.0020.0002.0BB6][.FFF1.0000.0000.0000] # <TAMIL LETTER SHA, TAMIL SIGN VIRAMA>
+0BB7 0BCD ; [.20FC.0020.0002.0BB7][.FFF1.0000.0000.0000] # <TAMIL LETTER SSA, TAMIL SIGN VIRAMA>
+0BB8 0BCD ; [.20FD.0020.0002.0BB8][.FFF1.0000.0000.0000] # <TAMIL LETTER SA, TAMIL SIGN VIRAMA>
+0BB9 0BCD ; [.20FE.0020.0002.0BB9][.FFF1.0000.0000.0000] # <TAMIL LETTER HA, TAMIL SIGN VIRAMA>
+0B95 0BCD 0BB7 0BCD ; [.20FF.0020.0002.0B95][.FFF1.0000.0000.0000] # <TAMIL LETTER KA, TAMIL SIGN VIRAMA, TAMIL LETTER SSA, TAMIL SIGN VIRAMA>
+0B95 0BCD 0BB7 ; [.20FF.0020.0002.0B95][.FFF2.0000.0000.0000] # <TAMIL LETTER KA, TAMIL SIGN VIRAMA, TAMIL LETTER SSA>
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/te.pl b/cpan/Unicode-Collate/Collate/Locale/te.pl
new file mode 100644
index 0000000000..fd32bc6542
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/te.pl
@@ -0,0 +1,7 @@
++{
+ entry => <<'ENTRY', # for DUCET v6.0.0
+0C01 ; [.211C.0020.0002.0C01][.FFF1.0000.0000.0000] # TELUGU SIGN CANDRABINDU
+0C02 ; [.211C.0020.0002.0C02][.FFF2.0000.0000.0000] # TELUGU SIGN ANUSVARA
+0C03 ; [.211C.0020.0002.0C03][.FFF3.0000.0000.0000] # TELUGU SIGN VISARGA
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/th.pl b/cpan/Unicode-Collate/Collate/Locale/th.pl
new file mode 100644
index 0000000000..6fe86cce69
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/th.pl
@@ -0,0 +1,15 @@
++{
+ entry => <<'ENTRY', # for DUCET v6.0.0
+0E2F ; [*0480.0020.0002.0E2F][*FFF1.0000.0000.0000] # THAI CHARACTER PAIYANNOI
+0E46 ; [*0480.0020.0002.0E46][*FFF2.0000.0000.0000] # THAI CHARACTER MAIYAMOK
+0E4C ; [.0000.011D.0002.0E4C] # THAI CHARACTER THANTHAKHAT
+0E47 ; [.0000.011E.0002.0E47] # THAI CHARACTER MAITAIKHU
+0E48 ; [.0000.011F.0002.0E48] # THAI CHARACTER MAI EK
+0E49 ; [.0000.0120.0002.0E49] # THAI CHARACTER MAI THO
+0E4A ; [.0000.0121.0002.0E4A] # THAI CHARACTER MAI TRI
+0E4B ; [.0000.0122.0002.0E4B] # THAI CHARACTER MAI CHATTAWA
+0E4D ; [.23C3.0020.0002.0E4D] # THAI CHARACTER NIKHAHIT
+0E45 ; [.23C6.0020.0003.0E45] # THAI CHARACTER LAKKHANGYAO
+0E3A ; [.23D4.0020.0002.0E3A] # THAI CHARACTER PHINTHU
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/uk.pl b/cpan/Unicode-Collate/Collate/Locale/uk.pl
index 9f24b3250e..3b3db69bf5 100644
--- a/cpan/Unicode-Collate/Collate/Locale/uk.pl
+++ b/cpan/Unicode-Collate/Collate/Locale/uk.pl
@@ -1,6 +1,46 @@
+{
+ suppress => [0x0410, 0x0430, 0x04D8, 0x04D9, 0x0413, 0x0433, 0x0415, 0x0435,
+ 0x0416, 0x0436, 0x0417, 0x0437, 0x041E, 0x043E, 0x04E8, 0x04E9,
+ 0x041A, 0x043A, 0x0423, 0x0443, 0x0427, 0x0447, 0x042B, 0x044B,
+ 0x042D, 0x044D, 0x0474, 0x0475],
entry => <<'ENTRY', # for DUCET v6.0.0
0491 ; [.1964.0020.0002.0491] # CYRILLIC SMALL LETTER GHE WITH UPTURN
0490 ; [.1964.0020.0008.0490] # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+044C ; [.1B15.0020.0002.044C] # CYRILLIC SMALL LETTER SOFT SIGN
+042C ; [.1B15.0020.0008.042C] # CYRILLIC CAPITAL LETTER SOFT SIGN
+04D1 ; [.1943.0020.0002.0430][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER A WITH BREVE
+04D0 ; [.1943.0020.0008.0410][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER A WITH BREVE
+04D3 ; [.1943.0020.0002.0430][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D2 ; [.1943.0020.0008.0410][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+04DB ; [.194F.0020.0002.04D9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+04DA ; [.194F.0020.0008.04D8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+0453 ; [.1963.0020.0002.0433][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER GJE
+0403 ; [.1963.0020.0008.0413][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER GJE
+04D7 ; [.198B.0020.0002.0435][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER IE WITH BREVE
+04D6 ; [.198B.0020.0008.0415][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER IE WITH BREVE
+04DD ; [.1997.0020.0002.0436][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+04DC ; [.1997.0020.0008.0416][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+04DF ; [.19A4.0020.0002.0437][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04DE ; [.19A4.0020.0008.0417][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+04E7 ; [.1A29.0020.0002.043E][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER O WITH DIAERESIS
+04E6 ; [.1A29.0020.0008.041E][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+04EB ; [.1A31.0020.0002.04E9][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+04EA ; [.1A31.0020.0008.04E8][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+045C ; [.19DA.0020.0002.043A][.0000.0032.0002.0301] # CYRILLIC SMALL LETTER KJE
+040C ; [.19DA.0020.0008.041A][.0000.0032.0002.0301] # CYRILLIC CAPITAL LETTER KJE
+045E ; [.1A6B.0020.0002.0443][.0000.0037.0002.0306] # CYRILLIC SMALL LETTER SHORT U
+040E ; [.1A6B.0020.0008.0423][.0000.0037.0002.0306] # CYRILLIC CAPITAL LETTER SHORT U
+04F1 ; [.1A6B.0020.0002.0443][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER U WITH DIAERESIS
+04F0 ; [.1A6B.0020.0008.0423][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+04F3 ; [.1A6B.0020.0002.0443][.0000.004D.0002.030B] # CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+04F2 ; [.1A6B.0020.0008.0423][.0000.004D.0002.030B] # CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+04F5 ; [.1ABE.0020.0002.0447][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F4 ; [.1ABE.0020.0008.0427][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+04F9 ; [.1AF1.0020.0002.044B][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+04F8 ; [.1AF1.0020.0008.042B][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+04ED ; [.1B06.0020.0002.044D][.0000.0047.0002.0308] # CYRILLIC SMALL LETTER E WITH DIAERESIS
+04EC ; [.1B06.0020.0008.042D][.0000.0047.0002.0308] # CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+0477 ; [.1B3C.0020.0002.0475][.0000.0065.0002.030F] # CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+0476 ; [.1B3C.0020.0008.0474][.0000.0065.0002.030F] # CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
ENTRY
};
diff --git a/cpan/Unicode-Collate/Collate/Locale/ur.pl b/cpan/Unicode-Collate/Collate/Locale/ur.pl
new file mode 100644
index 0000000000..5b4f72960f
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/ur.pl
@@ -0,0 +1,88 @@
++{
+ entry => <<'ENTRY', # for DUCET v6.0.0
+0627 ; [.1C43.0020.0002.0627] # ARABIC LETTER ALEF
+0623 ; [.1C43.0021.0002.0623] # ARABIC LETTER ALEF WITH HAMZA ABOVE
+0627 0654 ; [.1C43.0021.0002.0623] # ARABIC LETTER ALEF WITH HAMZA ABOVE
+0622 ; [.1C43.0020.0002.0622][.FFF1.0000.0000.0000] # ARABIC LETTER ALEF WITH MADDA ABOVE
+0627 0653 ; [.1C43.0020.0002.0622][.FFF1.0000.0000.0000] # ARABIC LETTER ALEF WITH MADDA ABOVE
+0628 ; [.1C43.0020.0002.0628][.FFF2.0000.0000.0000] # ARABIC LETTER BEH
+0628 06BE ; [.1C43.0020.0002.0628][.FFF3.0000.0000.0000] # <ARABIC LETTER BEH, ARABIC LETTER HEH DOACHASHMEE>
+067E ; [.1C43.0020.0002.067E][.FFF4.0000.0000.0000] # ARABIC LETTER PEH
+067E 06BE ; [.1C43.0020.0002.067E][.FFF5.0000.0000.0000] # <ARABIC LETTER PEH, ARABIC LETTER HEH DOACHASHMEE>
+062A ; [.1C43.0020.0002.062A][.FFF6.0000.0000.0000] # ARABIC LETTER TEH
+062A 06BE ; [.1C43.0020.0002.062A][.FFF7.0000.0000.0000] # <ARABIC LETTER TEH, ARABIC LETTER HEH DOACHASHMEE>
+0679 ; [.1C43.0020.0002.0679][.FFF8.0000.0000.0000] # ARABIC LETTER TTEH
+0679 06BE ; [.1C43.0020.0002.0679][.FFF9.0000.0000.0000] # <ARABIC LETTER TTEH, ARABIC LETTER HEH DOACHASHMEE>
+062B ; [.1C43.0020.0002.062B][.FFFA.0000.0000.0000] # ARABIC LETTER THEH
+062C ; [.1C43.0020.0002.062C][.FFFB.0000.0000.0000] # ARABIC LETTER JEEM
+062C 06BE ; [.1C44.0020.0002.062C][.FFF1.0000.0000.0000] # <ARABIC LETTER JEEM, ARABIC LETTER HEH DOACHASHMEE>
+0686 ; [.1C44.0020.0002.0686][.FFF2.0000.0000.0000] # ARABIC LETTER TCHEH
+0686 06BE ; [.1C44.0020.0002.0686][.FFF3.0000.0000.0000] # <ARABIC LETTER TCHEH, ARABIC LETTER HEH DOACHASHMEE>
+062D ; [.1C44.0020.0002.062D][.FFF4.0000.0000.0000] # ARABIC LETTER HAH
+062E ; [.1C44.0020.0002.062E][.FFF5.0000.0000.0000] # ARABIC LETTER KHAH
+062F ; [.1C44.0020.0002.062F][.FFF6.0000.0000.0000] # ARABIC LETTER DAL
+062F 06BE ; [.1C44.0020.0002.062F][.FFF7.0000.0000.0000] # <ARABIC LETTER DAL, ARABIC LETTER HEH DOACHASHMEE>
+0688 ; [.1C44.0020.0002.0688][.FFF8.0000.0000.0000] # ARABIC LETTER DDAL
+0688 06BE ; [.1C44.0020.0002.0688][.FFF9.0000.0000.0000] # <ARABIC LETTER DDAL, ARABIC LETTER HEH DOACHASHMEE>
+0630 ; [.1C44.0020.0002.0630][.FFFA.0000.0000.0000] # ARABIC LETTER THAL
+0631 ; [.1C44.0020.0002.0631][.FFFB.0000.0000.0000] # ARABIC LETTER REH
+0631 06BE ; [.1C45.0020.0002.0631][.FFF1.0000.0000.0000] # <ARABIC LETTER REH, ARABIC LETTER HEH DOACHASHMEE>
+0691 ; [.1C45.0020.0002.0691][.FFF2.0000.0000.0000] # ARABIC LETTER RREH
+0691 06BE ; [.1C45.0020.0002.0691][.FFF3.0000.0000.0000] # <ARABIC LETTER RREH, ARABIC LETTER HEH DOACHASHMEE>
+0632 ; [.1C45.0020.0002.0632][.FFF4.0000.0000.0000] # ARABIC LETTER ZAIN
+0698 ; [.1C45.0020.0002.0698][.FFF5.0000.0000.0000] # ARABIC LETTER JEH
+0633 ; [.1C45.0020.0002.0633][.FFF6.0000.0000.0000] # ARABIC LETTER SEEN
+0634 ; [.1C45.0020.0002.0634][.FFF7.0000.0000.0000] # ARABIC LETTER SHEEN
+0635 ; [.1C45.0020.0002.0635][.FFF8.0000.0000.0000] # ARABIC LETTER SAD
+0636 ; [.1C45.0020.0002.0636][.FFF9.0000.0000.0000] # ARABIC LETTER DAD
+0637 ; [.1C45.0020.0002.0637][.FFFA.0000.0000.0000] # ARABIC LETTER TAH
+0638 ; [.1C45.0020.0002.0638][.FFFB.0000.0000.0000] # ARABIC LETTER ZAH
+0639 ; [.1C46.0020.0002.0639][.FFF1.0000.0000.0000] # ARABIC LETTER AIN
+063A ; [.1C46.0020.0002.063A][.FFF2.0000.0000.0000] # ARABIC LETTER GHAIN
+0641 ; [.1C46.0020.0002.0641][.FFF3.0000.0000.0000] # ARABIC LETTER FEH
+0642 ; [.1C46.0020.0002.0642][.FFF4.0000.0000.0000] # ARABIC LETTER QAF
+06A9 ; [.1C46.0020.0002.06A9][.FFF5.0000.0000.0000] # ARABIC LETTER KEHEH
+06A9 06BE ; [.1C46.0020.0002.06A9][.FFF6.0000.0000.0000] # <ARABIC LETTER KEHEH, ARABIC LETTER HEH DOACHASHMEE>
+06AF ; [.1C46.0020.0002.06AF][.FFF7.0000.0000.0000] # ARABIC LETTER GAF
+06AF 06BE ; [.1C46.0020.0002.06AF][.FFF8.0000.0000.0000] # <ARABIC LETTER GAF, ARABIC LETTER HEH DOACHASHMEE>
+0644 ; [.1C46.0020.0002.0644][.FFF9.0000.0000.0000] # ARABIC LETTER LAM
+0644 06BE ; [.1C46.0020.0002.0644][.FFFA.0000.0000.0000] # <ARABIC LETTER LAM, ARABIC LETTER HEH DOACHASHMEE>
+0645 ; [.1C46.0020.0002.0645][.FFFB.0000.0000.0000] # ARABIC LETTER MEEM
+0645 06BE ; [.1C47.0020.0002.0645][.FFF1.0000.0000.0000] # <ARABIC LETTER MEEM, ARABIC LETTER HEH DOACHASHMEE>
+0646 ; [.1C47.0020.0002.0646][.FFF2.0000.0000.0000] # ARABIC LETTER NOON
+0646 06BE ; [.1C47.0020.0002.0646][.FFF3.0000.0000.0000] # <ARABIC LETTER NOON, ARABIC LETTER HEH DOACHASHMEE>
+06BA ; [.1C47.0020.0002.06BA][.FFF4.0000.0000.0000] # ARABIC LETTER NOON GHUNNA
+06BA 06BE ; [.1C47.0020.0002.06BA][.FFF5.0000.0000.0000] # <ARABIC LETTER NOON GHUNNA, ARABIC LETTER HEH DOACHASHMEE>
+0648 ; [.1C47.0020.0002.0648][.FFF6.0000.0000.0000] # ARABIC LETTER WAW
+0624 ; [.1C47.0021.0002.0624][.FFF6.0000.0000.0000] # ARABIC LETTER WAW WITH HAMZA ABOVE
+0648 0654 ; [.1C47.0021.0002.0624][.FFF6.0000.0000.0000] # ARABIC LETTER WAW WITH HAMZA ABOVE
+0648 06BE ; [.1C47.0020.0002.0648][.FFF7.0000.0000.0000] # <ARABIC LETTER WAW, ARABIC LETTER HEH DOACHASHMEE>
+06C1 ; [.1C47.0020.0002.06C1][.FFF8.0000.0000.0000] # ARABIC LETTER HEH GOAL
+06C2 ; [.1C47.0021.0002.06C2][.FFF8.0000.0000.0000] # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06C1 0654 ; [.1C47.0021.0002.06C2][.FFF8.0000.0000.0000] # ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06BE ; [.1C47.0020.0002.06BE][.FFF9.0000.0000.0000] # ARABIC LETTER HEH DOACHASHMEE
+06C3 ; [.1C47.0020.0002.06C3][.FFFA.0000.0000.0000] # ARABIC LETTER TEH MARBUTA GOAL
+0621 ; [.1C47.0020.0002.0621][.FFFB.0000.0000.0000] # ARABIC LETTER HAMZA
+06CC ; [.1C48.0020.0002.06CC][.FFF1.0000.0000.0000] # ARABIC LETTER FARSI YEH
+0626 ; [.1C48.0021.0002.0626][.FFF1.0000.0000.0000] # ARABIC LETTER YEH WITH HAMZA ABOVE
+064A 0654 ; [.1C48.0021.0002.0626][.FFF1.0000.0000.0000] # ARABIC LETTER YEH WITH HAMZA ABOVE
+06CC 06BE ; [.1C48.0020.0002.06CC][.FFF2.0000.0000.0000] # <ARABIC LETTER FARSI YEH, ARABIC LETTER HEH DOACHASHMEE>
+06D2 ; [.1C48.0020.0002.06D2][.FFF3.0000.0000.0000] # ARABIC LETTER YEH BARREE
+06D3 ; [.1C48.0021.0002.06D3][.FFF3.0000.0000.0000] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+06D2 0654 ; [.1C48.0021.0002.06D3][.FFF3.0000.0000.0000] # ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+0652 ; [.0000.00A2.0002.0652] # ARABIC SUKUN
+064E ; [.0000.00A3.0002.064E] # ARABIC FATHA
+0650 ; [.0000.00A4.0002.0650] # ARABIC KASRA
+064F ; [.0000.00A5.0002.064F] # ARABIC DAMMA
+0670 ; [.0000.00A6.0002.0670] # ARABIC LETTER SUPERSCRIPT ALEF
+0656 ; [.0000.00A7.0002.0656] # ARABIC SUBSCRIPT ALEF
+0657 ; [.0000.00A8.0002.0657] # ARABIC INVERTED DAMMA
+064B ; [.0000.00A9.0002.064B] # ARABIC FATHATAN
+064D ; [.0000.00AA.0002.064D] # ARABIC KASRATAN
+064C ; [.0000.00AB.0002.064C] # ARABIC DAMMATAN
+0654 ; [.0000.00AC.0002.0654] # ARABIC HAMZA ABOVE
+0651 ; [.0000.00AD.0002.0651] # ARABIC SHADDA
+0658 ; [.0000.00AE.0002.0658] # ARABIC MARK NOON GHUNNA
+0653 ; [.0000.00AF.0002.0653] # ARABIC MADDAH ABOVE
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/wae.pl b/cpan/Unicode-Collate/Collate/Locale/wae.pl
new file mode 100644
index 0000000000..abada128dc
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/wae.pl
@@ -0,0 +1,23 @@
++{
+ entry => <<'ENTRY', # for DUCET v6.0.0
+0061 0061 ; [.15A3.0020.0002.0061][.0000.0032.0002.0301] # <LATIN SMALL LETTER A, LATIN SMALL LETTER A>
+00E4 00E4 ; [.15A3.0020.0002.0061][.0000.004E.0002.0303] # <LATIN SMALL LETTER A WITH DIAERESIS, LATIN SMALL LETTER A WITH DIAERESIS>
+00E4 0061 0308 ; [.15A3.0020.0002.0061][.0000.004E.0002.0303] # <LATIN SMALL LETTER A WITH DIAERESIS, LATIN SMALL LETTER A, COMBINING DIAERESIS>
+0061 0308 00E4 ; [.15A3.0020.0002.0061][.0000.004E.0002.0303] # <LATIN SMALL LETTER A, COMBINING DIAERESIS, LATIN SMALL LETTER A WITH DIAERESIS>
+0061 0308 0061 0308 ; [.15A3.0020.0002.0061][.0000.004E.0002.0303] # <LATIN SMALL LETTER A, COMBINING DIAERESIS, LATIN SMALL LETTER A, COMBINING DIAERESIS>
+0065 0065 ; [.15FF.0020.0002.0065][.0000.0032.0002.0301] # <LATIN SMALL LETTER E, LATIN SMALL LETTER E>
+0069 0069 ; [.1680.0020.0002.0069][.0000.0032.0002.0301] # <LATIN SMALL LETTER I, LATIN SMALL LETTER I>
+006F 006F ; [.1724.0020.0002.006F][.0000.0032.0002.0301] # <LATIN SMALL LETTER O, LATIN SMALL LETTER O>
+00F6 00F6 ; [.1724.0020.0002.006F][.0000.004E.0002.0303] # <LATIN SMALL LETTER O WITH DIAERESIS, LATIN SMALL LETTER O WITH DIAERESIS>
+00F6 006F 0308 ; [.1724.0020.0002.006F][.0000.004E.0002.0303] # <LATIN SMALL LETTER O WITH DIAERESIS, LATIN SMALL LETTER O, COMBINING DIAERESIS>
+006F 0308 00F6 ; [.1724.0020.0002.006F][.0000.004E.0002.0303] # <LATIN SMALL LETTER O, COMBINING DIAERESIS, LATIN SMALL LETTER O WITH DIAERESIS>
+006F 0308 006F 0308 ; [.1724.0020.0002.006F][.0000.004E.0002.0303] # <LATIN SMALL LETTER O, COMBINING DIAERESIS, LATIN SMALL LETTER O, COMBINING DIAERESIS>
+0063 0068 ; [.15D1.0020.0002.0063][.0000.0041.0002.030C] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
+0073 0063 0068 ; [.17A6.0020.0002.0073][.0000.0041.0002.030C] # <LATIN SMALL LETTER S, LATIN SMALL LETTER C, LATIN SMALL LETTER H>
+0075 0075 ; [.17E9.0020.0002.0075][.0000.0032.0002.0301] # <LATIN SMALL LETTER U, LATIN SMALL LETTER U>
+00FC 00FC ; [.17E9.0020.0002.0075][.0000.004E.0002.0303] # <LATIN SMALL LETTER U WITH DIAERESIS, LATIN SMALL LETTER U WITH DIAERESIS>
+00FC 0075 0308 ; [.17E9.0020.0002.0075][.0000.004E.0002.0303] # <LATIN SMALL LETTER U WITH DIAERESIS, LATIN SMALL LETTER U, COMBINING DIAERESIS>
+0075 0308 00FC ; [.17E9.0020.0002.0075][.0000.004E.0002.0303] # <LATIN SMALL LETTER U, COMBINING DIAERESIS, LATIN SMALL LETTER U WITH DIAERESIS>
+0075 0308 0075 0308 ; [.17E9.0020.0002.0075][.0000.004E.0002.0303] # <LATIN SMALL LETTER U, COMBINING DIAERESIS, LATIN SMALL LETTER U, COMBINING DIAERESIS>
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/zh_pin.pl b/cpan/Unicode-Collate/Collate/Locale/zh_pin.pl
index 480cc3fa93..7b8974671c 100644
--- a/cpan/Unicode-Collate/Collate/Locale/zh_pin.pl
+++ b/cpan/Unicode-Collate/Collate/Locale/zh_pin.pl
@@ -208,6 +208,6 @@ use Unicode::Collate::CJK::Pinyin;
0075 0308 ; [.17E9.0025.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
00DC ; [.17E9.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
0055 0308 ; [.17E9.0025.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
-3007 ; [.A3E5.0020.0002.3007] # IDEOGRAPHIC NUMBER ZERO
+3007 ; [.A3F6.0020.0002.3007] # IDEOGRAPHIC NUMBER ZERO
ENTRY
};
diff --git a/cpan/Unicode-Collate/README b/cpan/Unicode-Collate/README
index 1218ec14d3..86b4518af0 100644
--- a/cpan/Unicode-Collate/README
+++ b/cpan/Unicode-Collate/README
@@ -1,4 +1,4 @@
-Unicode/Collate version 0.81
+Unicode/Collate version 0.84
===============================
NAME
diff --git a/cpan/Unicode-Collate/t/loc_be.t b/cpan/Unicode-Collate/t/loc_be.t
index be085500d1..95f35b7fc3 100644
--- a/cpan/Unicode-Collate/t/loc_be.t
+++ b/cpan/Unicode-Collate/t/loc_be.t
@@ -12,7 +12,7 @@ BEGIN {
}
use Test;
-BEGIN { plan tests => 191 };
+BEGIN { plan tests => 189 };
use strict;
use warnings;
@@ -30,9 +30,9 @@ ok($objBe->getlocale, 'be');
$objBe->change(level => 1);
ok($objBe->gt("\x{451}", "\x{435}"));
-ok($objBe->gt("\x{401}", "\x{415}"));
ok($objBe->lt("\x{451}", "\x{454}"));
-ok($objBe->lt("\x{401}", "\x{404}"));
+
+# 4
ok($objBe->gt("\x{4E5}", "\x{438}")); # not suppressed
ok($objBe->gt("\x{4E4}", "\x{418}")); # not suppressed
@@ -45,7 +45,7 @@ ok($objBe->gt("\x{4F0}", "\x{423}")); # not suppressed
ok($objBe->gt("\x{4F3}", "\x{443}")); # not suppressed
ok($objBe->gt("\x{4F2}", "\x{423}")); # not suppressed
-# 16
+# 14
ok($objBe->eq("\x{4D1}", "\x{430}"));
ok($objBe->eq("\x{4D0}", "\x{410}"));
@@ -88,12 +88,14 @@ ok($objBe->eq("\x{4EC}", "\x{42D}"));
ok($objBe->eq("\x{477}", "\x{475}"));
ok($objBe->eq("\x{476}", "\x{474}"));
-# 56
+# 54
$objBe->change(level => 2);
ok($objBe->eq("\x{451}", "\x{401}"));
+# 55
+
ok($objBe->gt("\x{4D1}", "\x{430}"));
ok($objBe->gt("\x{4D0}", "\x{410}"));
ok($objBe->gt("\x{4D3}", "\x{430}"));
@@ -135,12 +137,14 @@ ok($objBe->gt("\x{4EC}", "\x{42D}"));
ok($objBe->gt("\x{477}", "\x{475}"));
ok($objBe->gt("\x{476}", "\x{474}"));
-# 97
+# 95
$objBe->change(level => 3);
ok($objBe->lt("\x{451}", "\x{401}"));
+# 96
+
ok($objBe->eq("\x{451}", "\x{435}\x{308}"));
ok($objBe->eq("\x{401}", "\x{415}\x{308}"));
ok($objBe->eq("\x{4E5}", "\x{438}\x{308}")); # not suppressed
@@ -154,7 +158,7 @@ ok($objBe->eq("\x{4F0}", "\x{423}\x{308}")); # not suppressed
ok($objBe->eq("\x{4F3}", "\x{443}\x{30B}")); # not suppressed
ok($objBe->eq("\x{4F2}", "\x{423}\x{30B}")); # not suppressed
-# 110
+# 108
for my $i ("", "\0") {
ok($objBe->eq("\x{4D1}", "\x{430}$i\x{306}"));
@@ -199,10 +203,10 @@ for my $i ("", "\0") {
ok($objBe->eq("\x{476}", "\x{474}$i\x{30F}"));
}
-# 190
+# 188
$objBe->change(upper_before_lower => 1);
ok($objBe->gt("\x{451}", "\x{401}"));
-# 191
+# 189
diff --git a/cpan/Unicode-Collate/t/loc_cyrl.t b/cpan/Unicode-Collate/t/loc_cyrl.t
index 02deb3869e..eee5639b14 100644
--- a/cpan/Unicode-Collate/t/loc_cyrl.t
+++ b/cpan/Unicode-Collate/t/loc_cyrl.t
@@ -12,7 +12,7 @@ BEGIN {
}
use Test;
-BEGIN { plan tests => 104 };
+BEGIN { plan tests => 130 };
use strict;
use warnings;
@@ -29,115 +29,139 @@ ok($objNoSuppress->getlocale, 'default');
$objNoSuppress->change(level => 1);
-ok($objNoSuppress->ne("\x{4D1}", "\x{430}"));
-ok($objNoSuppress->ne("\x{4D0}", "\x{410}"));
-ok($objNoSuppress->ne("\x{4D3}", "\x{430}"));
-ok($objNoSuppress->ne("\x{4D2}", "\x{410}"));
-ok($objNoSuppress->ne("\x{453}", "\x{433}"));
-ok($objNoSuppress->ne("\x{403}", "\x{413}"));
-ok($objNoSuppress->ne("\x{4D7}", "\x{435}"));
-ok($objNoSuppress->ne("\x{4D6}", "\x{415}"));
-ok($objNoSuppress->ne("\x{4DD}", "\x{436}"));
-ok($objNoSuppress->ne("\x{4DC}", "\x{416}"));
-ok($objNoSuppress->ne("\x{4DF}", "\x{437}"));
-ok($objNoSuppress->ne("\x{4DE}", "\x{417}"));
-ok($objNoSuppress->ne("\x{4E5}", "\x{438}"));
-ok($objNoSuppress->ne("\x{4E4}", "\x{418}"));
-ok($objNoSuppress->ne("\x{457}", "\x{456}"));
-ok($objNoSuppress->ne("\x{407}", "\x{406}"));
-ok($objNoSuppress->ne("\x{439}", "\x{438}"));
-ok($objNoSuppress->ne("\x{419}", "\x{418}"));
-ok($objNoSuppress->ne("\x{4E7}", "\x{43E}"));
-ok($objNoSuppress->ne("\x{4E6}", "\x{41E}"));
-ok($objNoSuppress->ne("\x{45C}", "\x{43A}"));
-ok($objNoSuppress->ne("\x{40C}", "\x{41A}"));
-ok($objNoSuppress->ne("\x{45E}", "\x{443}"));
-ok($objNoSuppress->ne("\x{40E}", "\x{423}"));
-ok($objNoSuppress->ne("\x{4F1}", "\x{443}"));
-ok($objNoSuppress->ne("\x{4F0}", "\x{423}"));
-ok($objNoSuppress->ne("\x{4F3}", "\x{443}"));
-ok($objNoSuppress->ne("\x{4F2}", "\x{423}"));
-ok($objNoSuppress->ne("\x{4F5}", "\x{447}"));
-ok($objNoSuppress->ne("\x{4F4}", "\x{427}"));
-ok($objNoSuppress->ne("\x{4F9}", "\x{44B}"));
-ok($objNoSuppress->ne("\x{4F8}", "\x{42B}"));
-ok($objNoSuppress->ne("\x{4ED}", "\x{44D}"));
-ok($objNoSuppress->ne("\x{4EC}", "\x{42D}"));
-
-# 36
+ok($objNoSuppress->gt("\x{4D1}", "\x{430}")); # not suppressed
+ok($objNoSuppress->gt("\x{4D0}", "\x{410}")); # not suppressed
+ok($objNoSuppress->gt("\x{4D3}", "\x{430}")); # not suppressed
+ok($objNoSuppress->gt("\x{4D2}", "\x{410}")); # not suppressed
+ok($objNoSuppress->gt("\x{4DB}", "\x{4D9}")); # not suppressed
+ok($objNoSuppress->gt("\x{4DA}", "\x{4D8}")); # not suppressed
+ok($objNoSuppress->gt("\x{453}", "\x{433}")); # not suppressed
+ok($objNoSuppress->gt("\x{403}", "\x{413}")); # not suppressed
+ok($objNoSuppress->gt("\x{4D7}", "\x{435}")); # not suppressed
+ok($objNoSuppress->gt("\x{4D6}", "\x{415}")); # not suppressed
+ok($objNoSuppress->gt("\x{4DD}", "\x{436}")); # not suppressed
+ok($objNoSuppress->gt("\x{4DC}", "\x{416}")); # not suppressed
+ok($objNoSuppress->gt("\x{4DF}", "\x{437}")); # not suppressed
+ok($objNoSuppress->gt("\x{4DE}", "\x{417}")); # not suppressed
+ok($objNoSuppress->gt("\x{4E5}", "\x{438}")); # not suppressed
+ok($objNoSuppress->gt("\x{4E4}", "\x{418}")); # not suppressed
+ok($objNoSuppress->gt("\x{457}", "\x{456}")); # not suppressed
+ok($objNoSuppress->gt("\x{407}", "\x{406}")); # not suppressed
+ok($objNoSuppress->gt("\x{439}", "\x{438}")); # not suppressed
+ok($objNoSuppress->gt("\x{419}", "\x{418}")); # not suppressed
+ok($objNoSuppress->gt("\x{4E7}", "\x{43E}")); # not suppressed
+ok($objNoSuppress->gt("\x{4E6}", "\x{41E}")); # not suppressed
+ok($objNoSuppress->gt("\x{4EB}", "\x{4E9}")); # not suppressed
+ok($objNoSuppress->gt("\x{4EA}", "\x{4E8}")); # not suppressed
+ok($objNoSuppress->gt("\x{45C}", "\x{43A}")); # not suppressed
+ok($objNoSuppress->gt("\x{40C}", "\x{41A}")); # not suppressed
+ok($objNoSuppress->gt("\x{45E}", "\x{443}")); # not suppressed
+ok($objNoSuppress->gt("\x{40E}", "\x{423}")); # not suppressed
+ok($objNoSuppress->gt("\x{4F1}", "\x{443}")); # not suppressed
+ok($objNoSuppress->gt("\x{4F0}", "\x{423}")); # not suppressed
+ok($objNoSuppress->gt("\x{4F3}", "\x{443}")); # not suppressed
+ok($objNoSuppress->gt("\x{4F2}", "\x{423}")); # not suppressed
+ok($objNoSuppress->gt("\x{4F5}", "\x{447}")); # not suppressed
+ok($objNoSuppress->gt("\x{4F4}", "\x{427}")); # not suppressed
+ok($objNoSuppress->gt("\x{4F9}", "\x{44B}")); # not suppressed
+ok($objNoSuppress->gt("\x{4F8}", "\x{42B}")); # not suppressed
+ok($objNoSuppress->gt("\x{4ED}", "\x{44D}")); # not suppressed
+ok($objNoSuppress->gt("\x{4EC}", "\x{42D}")); # not suppressed
+ok($objNoSuppress->gt("\x{477}", "\x{475}")); # not suppressed
+ok($objNoSuppress->gt("\x{476}", "\x{474}")); # not suppressed
+
+# 42
+
+ok($objNoSuppress->eq("\x{450}", "\x{435}")); # not contraction
+ok($objNoSuppress->eq("\x{400}", "\x{415}")); # not contraction
+ok($objNoSuppress->eq("\x{451}", "\x{435}")); # not contraction
+ok($objNoSuppress->eq("\x{401}", "\x{415}")); # not contraction
+ok($objNoSuppress->eq("\x{4C2}", "\x{436}")); # not contraction
+ok($objNoSuppress->eq("\x{4C1}", "\x{416}")); # not contraction
+ok($objNoSuppress->eq("\x{45D}", "\x{438}")); # not contraction
+ok($objNoSuppress->eq("\x{40D}", "\x{418}")); # not contraction
+ok($objNoSuppress->eq("\x{4E3}", "\x{438}")); # not contraction
+ok($objNoSuppress->eq("\x{4E2}", "\x{418}")); # not contraction
+ok($objNoSuppress->eq("\x{4EF}", "\x{443}")); # not contraction
+ok($objNoSuppress->eq("\x{4EE}", "\x{423}")); # not contraction
+
+# 54
+
+$objNoSuppress->change(level => 2);
+
+ok($objNoSuppress->gt("\x{450}", "\x{435}")); # not contraction
+ok($objNoSuppress->gt("\x{400}", "\x{415}")); # not contraction
+ok($objNoSuppress->gt("\x{451}", "\x{435}")); # not contraction
+ok($objNoSuppress->gt("\x{401}", "\x{415}")); # not contraction
+ok($objNoSuppress->gt("\x{4C2}", "\x{436}")); # not contraction
+ok($objNoSuppress->gt("\x{4C1}", "\x{416}")); # not contraction
+ok($objNoSuppress->gt("\x{45D}", "\x{438}")); # not contraction
+ok($objNoSuppress->gt("\x{40D}", "\x{418}")); # not contraction
+ok($objNoSuppress->gt("\x{4E3}", "\x{438}")); # not contraction
+ok($objNoSuppress->gt("\x{4E2}", "\x{418}")); # not contraction
+ok($objNoSuppress->gt("\x{4EF}", "\x{443}")); # not contraction
+ok($objNoSuppress->gt("\x{4EE}", "\x{423}")); # not contraction
+
+# 66
$objNoSuppress->change(level => 3);
-ok($objNoSuppress->eq("\x{4D1}", "\x{430}\x{306}"));
-ok($objNoSuppress->eq("\x{4D0}", "\x{410}\x{306}"));
-ok($objNoSuppress->eq("\x{4D3}", "\x{430}\x{308}"));
-ok($objNoSuppress->eq("\x{4D2}", "\x{410}\x{308}"));
-ok($objNoSuppress->eq("\x{453}", "\x{433}\x{301}"));
-ok($objNoSuppress->eq("\x{403}", "\x{413}\x{301}"));
-ok($objNoSuppress->eq("\x{4D7}", "\x{435}\x{306}"));
-ok($objNoSuppress->eq("\x{4D6}", "\x{415}\x{306}"));
-ok($objNoSuppress->eq("\x{4DD}", "\x{436}\x{308}"));
-ok($objNoSuppress->eq("\x{4DC}", "\x{416}\x{308}"));
-ok($objNoSuppress->eq("\x{4DF}", "\x{437}\x{308}"));
-ok($objNoSuppress->eq("\x{4DE}", "\x{417}\x{308}"));
-ok($objNoSuppress->eq("\x{4E5}", "\x{438}\x{308}"));
-ok($objNoSuppress->eq("\x{4E4}", "\x{418}\x{308}"));
-ok($objNoSuppress->eq("\x{457}", "\x{456}\x{308}"));
-ok($objNoSuppress->eq("\x{407}", "\x{406}\x{308}"));
-ok($objNoSuppress->eq("\x{439}", "\x{438}\x{306}"));
-ok($objNoSuppress->eq("\x{419}", "\x{418}\x{306}"));
-ok($objNoSuppress->eq("\x{4E7}", "\x{43E}\x{308}"));
-ok($objNoSuppress->eq("\x{4E6}", "\x{41E}\x{308}"));
-ok($objNoSuppress->eq("\x{45C}", "\x{43A}\x{301}"));
-ok($objNoSuppress->eq("\x{40C}", "\x{41A}\x{301}"));
-ok($objNoSuppress->eq("\x{45E}", "\x{443}\x{306}"));
-ok($objNoSuppress->eq("\x{40E}", "\x{423}\x{306}"));
-ok($objNoSuppress->eq("\x{4F1}", "\x{443}\x{308}"));
-ok($objNoSuppress->eq("\x{4F0}", "\x{423}\x{308}"));
-ok($objNoSuppress->eq("\x{4F3}", "\x{443}\x{30B}"));
-ok($objNoSuppress->eq("\x{4F2}", "\x{423}\x{30B}"));
-ok($objNoSuppress->eq("\x{4F5}", "\x{447}\x{308}"));
-ok($objNoSuppress->eq("\x{4F4}", "\x{427}\x{308}"));
-ok($objNoSuppress->eq("\x{4F9}", "\x{44B}\x{308}"));
-ok($objNoSuppress->eq("\x{4F8}", "\x{42B}\x{308}"));
-ok($objNoSuppress->eq("\x{4ED}", "\x{44D}\x{308}"));
-ok($objNoSuppress->eq("\x{4EC}", "\x{42D}\x{308}"));
-
-# 70
-
-ok($objNoSuppress->ne("\x{4D1}", "\x{430}\0\x{306}"));
-ok($objNoSuppress->ne("\x{4D0}", "\x{410}\0\x{306}"));
-ok($objNoSuppress->ne("\x{4D3}", "\x{430}\0\x{308}"));
-ok($objNoSuppress->ne("\x{4D2}", "\x{410}\0\x{308}"));
-ok($objNoSuppress->ne("\x{453}", "\x{433}\0\x{301}"));
-ok($objNoSuppress->ne("\x{403}", "\x{413}\0\x{301}"));
-ok($objNoSuppress->ne("\x{4D7}", "\x{435}\0\x{306}"));
-ok($objNoSuppress->ne("\x{4D6}", "\x{415}\0\x{306}"));
-ok($objNoSuppress->ne("\x{4DD}", "\x{436}\0\x{308}"));
-ok($objNoSuppress->ne("\x{4DC}", "\x{416}\0\x{308}"));
-ok($objNoSuppress->ne("\x{4DF}", "\x{437}\0\x{308}"));
-ok($objNoSuppress->ne("\x{4DE}", "\x{417}\0\x{308}"));
-ok($objNoSuppress->ne("\x{4E5}", "\x{438}\0\x{308}"));
-ok($objNoSuppress->ne("\x{4E4}", "\x{418}\0\x{308}"));
-ok($objNoSuppress->ne("\x{457}", "\x{456}\0\x{308}"));
-ok($objNoSuppress->ne("\x{407}", "\x{406}\0\x{308}"));
-ok($objNoSuppress->ne("\x{439}", "\x{438}\0\x{306}"));
-ok($objNoSuppress->ne("\x{419}", "\x{418}\0\x{306}"));
-ok($objNoSuppress->ne("\x{4E7}", "\x{43E}\0\x{308}"));
-ok($objNoSuppress->ne("\x{4E6}", "\x{41E}\0\x{308}"));
-ok($objNoSuppress->ne("\x{45C}", "\x{43A}\0\x{301}"));
-ok($objNoSuppress->ne("\x{40C}", "\x{41A}\0\x{301}"));
-ok($objNoSuppress->ne("\x{45E}", "\x{443}\0\x{306}"));
-ok($objNoSuppress->ne("\x{40E}", "\x{423}\0\x{306}"));
-ok($objNoSuppress->ne("\x{4F1}", "\x{443}\0\x{308}"));
-ok($objNoSuppress->ne("\x{4F0}", "\x{423}\0\x{308}"));
-ok($objNoSuppress->ne("\x{4F3}", "\x{443}\0\x{30B}"));
-ok($objNoSuppress->ne("\x{4F2}", "\x{423}\0\x{30B}"));
-ok($objNoSuppress->ne("\x{4F5}", "\x{447}\0\x{308}"));
-ok($objNoSuppress->ne("\x{4F4}", "\x{427}\0\x{308}"));
-ok($objNoSuppress->ne("\x{4F9}", "\x{44B}\0\x{308}"));
-ok($objNoSuppress->ne("\x{4F8}", "\x{42B}\0\x{308}"));
-ok($objNoSuppress->ne("\x{4ED}", "\x{44D}\0\x{308}"));
-ok($objNoSuppress->ne("\x{4EC}", "\x{42D}\0\x{308}"));
-
-# 104
+ok($objNoSuppress->eq("\x{4D1}", "\x{430}\x{306}")); # not suppressed
+ok($objNoSuppress->eq("\x{4D0}", "\x{410}\x{306}")); # not suppressed
+ok($objNoSuppress->eq("\x{4D3}", "\x{430}\x{308}")); # not suppressed
+ok($objNoSuppress->eq("\x{4D2}", "\x{410}\x{308}")); # not suppressed
+ok($objNoSuppress->eq("\x{4DB}", "\x{4D9}\x{308}")); # not suppressed
+ok($objNoSuppress->eq("\x{4DA}", "\x{4D8}\x{308}")); # not suppressed
+ok($objNoSuppress->eq("\x{453}", "\x{433}\x{301}")); # not suppressed
+ok($objNoSuppress->eq("\x{403}", "\x{413}\x{301}")); # not suppressed
+ok($objNoSuppress->eq("\x{4D7}", "\x{435}\x{306}")); # not suppressed
+ok($objNoSuppress->eq("\x{4D6}", "\x{415}\x{306}")); # not suppressed
+ok($objNoSuppress->eq("\x{4DD}", "\x{436}\x{308}")); # not suppressed
+ok($objNoSuppress->eq("\x{4DC}", "\x{416}\x{308}")); # not suppressed
+ok($objNoSuppress->eq("\x{4DF}", "\x{437}\x{308}")); # not suppressed
+ok($objNoSuppress->eq("\x{4DE}", "\x{417}\x{308}")); # not suppressed
+ok($objNoSuppress->eq("\x{4E5}", "\x{438}\x{308}")); # not suppressed
+ok($objNoSuppress->eq("\x{4E4}", "\x{418}\x{308}")); # not suppressed
+ok($objNoSuppress->eq("\x{457}", "\x{456}\x{308}")); # not suppressed
+ok($objNoSuppress->eq("\x{407}", "\x{406}\x{308}")); # not suppressed
+ok($objNoSuppress->eq("\x{439}", "\x{438}\x{306}")); # not suppressed
+ok($objNoSuppress->eq("\x{419}", "\x{418}\x{306}")); # not suppressed
+ok($objNoSuppress->eq("\x{4E7}", "\x{43E}\x{308}")); # not suppressed
+ok($objNoSuppress->eq("\x{4E6}", "\x{41E}\x{308}")); # not suppressed
+ok($objNoSuppress->eq("\x{4EB}", "\x{4E9}\x{308}")); # not suppressed
+ok($objNoSuppress->eq("\x{4EA}", "\x{4E8}\x{308}")); # not suppressed
+ok($objNoSuppress->eq("\x{45C}", "\x{43A}\x{301}")); # not suppressed
+ok($objNoSuppress->eq("\x{40C}", "\x{41A}\x{301}")); # not suppressed
+ok($objNoSuppress->eq("\x{45E}", "\x{443}\x{306}")); # not suppressed
+ok($objNoSuppress->eq("\x{40E}", "\x{423}\x{306}")); # not suppressed
+ok($objNoSuppress->eq("\x{4F1}", "\x{443}\x{308}")); # not suppressed
+ok($objNoSuppress->eq("\x{4F0}", "\x{423}\x{308}")); # not suppressed
+ok($objNoSuppress->eq("\x{4F3}", "\x{443}\x{30B}")); # not suppressed
+ok($objNoSuppress->eq("\x{4F2}", "\x{423}\x{30B}")); # not suppressed
+ok($objNoSuppress->eq("\x{4F5}", "\x{447}\x{308}")); # not suppressed
+ok($objNoSuppress->eq("\x{4F4}", "\x{427}\x{308}")); # not suppressed
+ok($objNoSuppress->eq("\x{4F9}", "\x{44B}\x{308}")); # not suppressed
+ok($objNoSuppress->eq("\x{4F8}", "\x{42B}\x{308}")); # not suppressed
+ok($objNoSuppress->eq("\x{4ED}", "\x{44D}\x{308}")); # not suppressed
+ok($objNoSuppress->eq("\x{4EC}", "\x{42D}\x{308}")); # not suppressed
+ok($objNoSuppress->eq("\x{477}", "\x{475}\x{30F}")); # not suppressed
+ok($objNoSuppress->eq("\x{476}", "\x{474}\x{30F}")); # not suppressed
+
+# 106
+
+for my $i ("", "\0") {
+ ok($objNoSuppress->eq("\x{450}", "\x{435}$i\x{300}")); # not contraction
+ ok($objNoSuppress->eq("\x{400}", "\x{415}$i\x{300}")); # not contraction
+ ok($objNoSuppress->eq("\x{451}", "\x{435}$i\x{308}")); # not contraction
+ ok($objNoSuppress->eq("\x{401}", "\x{415}$i\x{308}")); # not contraction
+ ok($objNoSuppress->eq("\x{4C2}", "\x{436}$i\x{306}")); # not contraction
+ ok($objNoSuppress->eq("\x{4C1}", "\x{416}$i\x{306}")); # not contraction
+ ok($objNoSuppress->eq("\x{45D}", "\x{438}$i\x{300}")); # not contraction
+ ok($objNoSuppress->eq("\x{40D}", "\x{418}$i\x{300}")); # not contraction
+ ok($objNoSuppress->eq("\x{4E3}", "\x{438}$i\x{304}")); # not contraction
+ ok($objNoSuppress->eq("\x{4E2}", "\x{418}$i\x{304}")); # not contraction
+ ok($objNoSuppress->eq("\x{4EF}", "\x{443}$i\x{304}")); # not contraction
+ ok($objNoSuppress->eq("\x{4EE}", "\x{423}$i\x{304}")); # not contraction
+}
+
+# 130
diff --git a/cpan/Unicode-Collate/t/loc_fa.t b/cpan/Unicode-Collate/t/loc_fa.t
new file mode 100644
index 0000000000..6f18df05db
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_fa.t
@@ -0,0 +1,142 @@
+
+BEGIN {
+ unless ("A" eq pack('U', 0x41)) {
+ print "1..0 # Unicode::Collate " .
+ "cannot stringify a Unicode code point\n";
+ exit 0;
+ }
+ if ($ENV{PERL_CORE}) {
+ chdir('t') if -d 't';
+ @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+ }
+}
+
+use Test;
+BEGIN { plan tests => 81 };
+
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+ok(1);
+
+#########################
+
+my $objFa = Unicode::Collate::Locale->
+ new(locale => 'FA', normalization => undef);
+
+ok($objFa->getlocale, 'fa');
+
+$objFa->change(level => 1);
+
+ok($objFa->lt("\x{622}", "\x{627}"));
+ok($objFa->lt("\x{627}", "\x{621}"));
+ok($objFa->lt("\x{621}", "\x{66E}"));
+
+ok($objFa->lt("\x{6CF}", "\x{647}"));
+ok($objFa->lt("\x{647}", "\x{778}"));
+
+# 7
+
+ok($objFa->eq("\x{64E}", "\x{650}"));
+ok($objFa->eq("\x{650}", "\x{64F}"));
+ok($objFa->eq("\x{64F}", "\x{64B}"));
+ok($objFa->eq("\x{64B}", "\x{64D}"));
+ok($objFa->eq("\x{64D}", "\x{64C}"));
+
+ok($objFa->eq("\x{627}", "\x{671}"));
+
+ok($objFa->eq("\x{621}", "\x{623}"));
+ok($objFa->eq("\x{623}", "\x{672}"));
+ok($objFa->eq("\x{672}", "\x{625}"));
+ok($objFa->eq("\x{625}", "\x{673}"));
+ok($objFa->eq("\x{673}", "\x{624}"));
+ok($objFa->eq("\x{624}", "\x{6CC}\x{654}"));
+
+ok($objFa->eq("\x{6A9}", "\x{6AA}"));
+ok($objFa->eq("\x{6AA}", "\x{6AB}"));
+ok($objFa->eq("\x{6AB}", "\x{643}"));
+ok($objFa->eq("\x{643}", "\x{6AC}"));
+ok($objFa->eq("\x{6AC}", "\x{6AD}"));
+ok($objFa->eq("\x{6AD}", "\x{6AE}"));
+
+ok($objFa->eq("\x{647}", "\x{6D5}"));
+ok($objFa->eq("\x{6D5}", "\x{6C1}"));
+ok($objFa->eq("\x{6C1}", "\x{629}"));
+ok($objFa->eq("\x{629}", "\x{6C3}"));
+ok($objFa->eq("\x{6C3}", "\x{6C0}"));
+ok($objFa->eq("\x{6C0}", "\x{6BE}"));
+
+ok($objFa->eq("\x{6CC}", "\x{649}"));
+ok($objFa->eq("\x{649}", "\x{6D2}"));
+ok($objFa->eq("\x{6D2}", "\x{64A}"));
+ok($objFa->eq("\x{64A}", "\x{6D0}"));
+ok($objFa->eq("\x{6D0}", "\x{6D1}"));
+ok($objFa->eq("\x{6D1}", "\x{6CD}"));
+ok($objFa->eq("\x{6CD}", "\x{6CE}"));
+
+# 38
+
+$objFa->change(level => 2);
+
+ok($objFa->lt("\x{64E}", "\x{650}"));
+ok($objFa->lt("\x{650}", "\x{64F}"));
+ok($objFa->lt("\x{64F}", "\x{64B}"));
+ok($objFa->lt("\x{64B}", "\x{64D}"));
+ok($objFa->lt("\x{64D}", "\x{64C}"));
+
+ok($objFa->lt("\x{627}", "\x{671}"));
+
+ok($objFa->lt("\x{621}", "\x{623}"));
+ok($objFa->lt("\x{623}", "\x{672}"));
+ok($objFa->lt("\x{672}", "\x{625}"));
+ok($objFa->lt("\x{625}", "\x{673}"));
+ok($objFa->lt("\x{673}", "\x{624}"));
+ok($objFa->lt("\x{624}", "\x{6CC}\x{654}"));
+
+ok($objFa->lt("\x{6A9}", "\x{6AA}"));
+ok($objFa->lt("\x{6AA}", "\x{6AB}"));
+ok($objFa->lt("\x{6AB}", "\x{643}"));
+ok($objFa->lt("\x{643}", "\x{6AC}"));
+ok($objFa->lt("\x{6AC}", "\x{6AD}"));
+ok($objFa->lt("\x{6AD}", "\x{6AE}"));
+
+ok($objFa->lt("\x{647}", "\x{6D5}"));
+ok($objFa->lt("\x{6D5}", "\x{6C1}"));
+ok($objFa->lt("\x{6C1}", "\x{629}"));
+ok($objFa->lt("\x{629}", "\x{6C3}"));
+ok($objFa->lt("\x{6C3}", "\x{6C0}"));
+ok($objFa->lt("\x{6C0}", "\x{6BE}"));
+
+ok($objFa->lt("\x{6CC}", "\x{649}"));
+ok($objFa->lt("\x{649}", "\x{6D2}"));
+ok($objFa->lt("\x{6D2}", "\x{64A}"));
+ok($objFa->lt("\x{64A}", "\x{6D0}"));
+ok($objFa->lt("\x{6D0}", "\x{6D1}"));
+ok($objFa->lt("\x{6D1}", "\x{6CD}"));
+ok($objFa->lt("\x{6CD}", "\x{6CE}"));
+
+# 69
+
+ok($objFa->eq("\x{6CC}\x{654}", "\x{649}\x{654}"));
+ok($objFa->eq("\x{649}\x{654}", "\x{626}"));
+
+# 71
+
+$objFa->change(level => 3);
+
+ok($objFa->lt("\x{6CC}\x{654}", "\x{649}\x{654}"));
+ok($objFa->lt("\x{649}\x{654}", "\x{626}"));
+
+# 73
+
+ok($objFa->eq("\x{622}", "\x{627}\x{653}"));
+ok($objFa->eq("\x{623}", "\x{627}\x{654}"));
+ok($objFa->eq("\x{625}", "\x{627}\x{655}"));
+ok($objFa->eq("\x{624}", "\x{648}\x{654}"));
+ok($objFa->eq("\x{626}", "\x{64A}\x{654}"));
+ok($objFa->eq("\x{6C2}", "\x{6C1}\x{654}"));
+ok($objFa->eq("\x{6C0}", "\x{6D5}\x{654}"));
+ok($objFa->eq("\x{6D3}", "\x{6D2}\x{654}"));
+
+# 81
diff --git a/cpan/Unicode-Collate/t/loc_fiph.t b/cpan/Unicode-Collate/t/loc_fiph.t
index 4c38c1565b..621d5ac320 100644
--- a/cpan/Unicode-Collate/t/loc_fiph.t
+++ b/cpan/Unicode-Collate/t/loc_fiph.t
@@ -49,17 +49,19 @@ ok($objFiPhone->lt($ouml, "\x{1C0}"));
# 6
+ok($objFiPhone->lt('v', 'w'));
+ok($objFiPhone->gt('x', 'w'));
+
ok($objFiPhone->eq("d\x{335}", "\x{111}"));
ok($objFiPhone->eq("g\x{335}", "\x{1E5}"));
ok($objFiPhone->eq("n\x{335}", "\x{14B}"));
ok($objFiPhone->eq("t\x{335}", "\x{167}"));
ok($objFiPhone->eq("z\x{335}", "\x{292}"));
-ok($objFiPhone->lt('v', 'w'));
ok($objFiPhone->eq('y', $uuml));
ok($objFiPhone->eq($auml, $ae));
ok($objFiPhone->eq($ouml, $ostk));
-# 15
+# 16
$objFiPhone->change(level => 2);
@@ -68,7 +70,6 @@ ok($objFiPhone->lt("g\x{335}", "\x{1E5}"));
ok($objFiPhone->lt("n\x{335}", "\x{14B}"));
ok($objFiPhone->lt("t\x{335}", "\x{167}"));
ok($objFiPhone->lt("z\x{335}", "\x{292}"));
-ok($objFiPhone->lt('v', 'w'));
ok($objFiPhone->lt('y', $uuml));
ok($objFiPhone->lt($auml, $ae));
ok($objFiPhone->lt($ouml, $ostk));
diff --git a/cpan/Unicode-Collate/t/loc_kk.t b/cpan/Unicode-Collate/t/loc_kk.t
index ee5840939f..33bc6bd069 100644
--- a/cpan/Unicode-Collate/t/loc_kk.t
+++ b/cpan/Unicode-Collate/t/loc_kk.t
@@ -12,7 +12,7 @@ BEGIN {
}
use Test;
-BEGIN { plan tests => 217 };
+BEGIN { plan tests => 211 };
use strict;
use warnings;
@@ -30,25 +30,20 @@ ok($objKk->getlocale, 'kk');
$objKk->change(level => 1);
ok($objKk->gt("\x{451}", "\x{435}"));
-ok($objKk->gt("\x{401}", "\x{415}"));
-ok($objKk->gt("\x{4AF}", "\x{4B1}"));
-ok($objKk->gt("\x{4AE}", "\x{4B0}"));
-ok($objKk->lt("\x{456}", "\x{44C}"));
-ok($objKk->lt("\x{406}", "\x{42C}"));
-
ok($objKk->lt("\x{451}", "\x{454}"));
-ok($objKk->lt("\x{401}", "\x{404}"));
+ok($objKk->gt("\x{4AF}", "\x{4B1}"));
ok($objKk->lt("\x{4AF}", "\x{A64B}"));
-ok($objKk->lt("\x{4AE}", "\x{A64A}"));
ok($objKk->gt("\x{456}", "\x{4F9}"));
-ok($objKk->gt("\x{406}", "\x{4F8}"));
+ok($objKk->lt("\x{456}", "\x{44C}"));
+
+# 8
ok($objKk->gt("\x{4E5}", "\x{438}")); # not suppressed
ok($objKk->gt("\x{4E4}", "\x{418}")); # not suppressed
ok($objKk->gt("\x{439}", "\x{438}")); # not suppressed
ok($objKk->gt("\x{419}", "\x{418}")); # not suppressed
-# 18
+# 12
ok($objKk->eq("\x{4D1}", "\x{430}"));
ok($objKk->eq("\x{4D0}", "\x{410}"));
@@ -97,7 +92,7 @@ ok($objKk->eq("\x{4EC}", "\x{42D}"));
ok($objKk->eq("\x{477}", "\x{475}"));
ok($objKk->eq("\x{476}", "\x{474}"));
-# 64
+# 58
$objKk->change(level => 2);
@@ -105,6 +100,8 @@ ok($objKk->eq("\x{451}", "\x{401}"));
ok($objKk->eq("\x{4AF}", "\x{4AE}"));
ok($objKk->eq("\x{456}", "\x{406}"));
+# 61
+
ok($objKk->gt("\x{4D1}", "\x{430}"));
ok($objKk->gt("\x{4D0}", "\x{410}"));
ok($objKk->gt("\x{4D3}", "\x{430}"));
@@ -152,7 +149,7 @@ ok($objKk->gt("\x{4EC}", "\x{42D}"));
ok($objKk->gt("\x{477}", "\x{475}"));
ok($objKk->gt("\x{476}", "\x{474}"));
-# 113
+# 107
$objKk->change(level => 3);
@@ -160,6 +157,8 @@ ok($objKk->lt("\x{451}", "\x{401}"));
ok($objKk->lt("\x{4AF}", "\x{4AE}"));
ok($objKk->lt("\x{456}", "\x{406}"));
+# 110
+
ok($objKk->eq("\x{451}", "\x{435}\x{308}"));
ok($objKk->eq("\x{401}", "\x{415}\x{308}"));
ok($objKk->eq("\x{4E5}", "\x{438}\x{308}")); # not suppressed
@@ -167,7 +166,7 @@ ok($objKk->eq("\x{4E4}", "\x{418}\x{308}")); # not suppressed
ok($objKk->eq("\x{439}", "\x{438}\x{306}")); # not suppressed
ok($objKk->eq("\x{419}", "\x{418}\x{306}")); # not suppressed
-# 122
+# 116
for my $i ("", "\0") {
ok($objKk->eq("\x{4D1}", "\x{430}$i\x{306}"));
@@ -218,7 +217,7 @@ for my $i ("", "\0") {
ok($objKk->eq("\x{476}", "\x{474}$i\x{30F}"));
}
-# 214
+# 208
$objKk->change(upper_before_lower => 1);
@@ -226,4 +225,4 @@ ok($objKk->gt("\x{451}", "\x{401}"));
ok($objKk->gt("\x{4AF}", "\x{4AE}"));
ok($objKk->gt("\x{456}", "\x{406}"));
-# 217
+# 211
diff --git a/cpan/Unicode-Collate/t/loc_si.t b/cpan/Unicode-Collate/t/loc_si.t
new file mode 100644
index 0000000000..1c994f5acf
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_si.t
@@ -0,0 +1,39 @@
+
+BEGIN {
+ unless ("A" eq pack('U', 0x41)) {
+ print "1..0 # Unicode::Collate " .
+ "cannot stringify a Unicode code point\n";
+ exit 0;
+ }
+ if ($ENV{PERL_CORE}) {
+ chdir('t') if -d 't';
+ @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+ }
+}
+
+use Test;
+BEGIN { plan tests => 8 };
+
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+ok(1);
+
+#########################
+
+my $objSi = Unicode::Collate::Locale->
+ new(locale => 'SI', normalization => undef);
+
+ok($objSi->getlocale, 'si');
+
+$objSi->change(level => 1);
+
+ok($objSi->lt("\x{D96}", "\x{D82}"));
+ok($objSi->lt("\x{D82}", "\x{D83}"));
+ok($objSi->lt("\x{D83}", "\x{D9A}"));
+
+ok($objSi->lt("\x{DA3}", "\x{DA5}"));
+ok($objSi->lt("\x{DA5}", "\x{DA4}"));
+ok($objSi->lt("\x{DA4}", "\x{DA6}"));
+
diff --git a/cpan/Unicode-Collate/t/loc_sidt.t b/cpan/Unicode-Collate/t/loc_sidt.t
new file mode 100644
index 0000000000..42fb5609ee
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_sidt.t
@@ -0,0 +1,43 @@
+
+BEGIN {
+ unless ("A" eq pack('U', 0x41)) {
+ print "1..0 # Unicode::Collate " .
+ "cannot stringify a Unicode code point\n";
+ exit 0;
+ }
+ if ($ENV{PERL_CORE}) {
+ chdir('t') if -d 't';
+ @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+ }
+}
+
+use Test;
+BEGIN { plan tests => 9 };
+
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+ok(1);
+
+#########################
+
+my $objSiDict = Unicode::Collate::Locale->
+ new(locale => 'SI-dict', normalization => undef);
+
+ok($objSiDict->getlocale, 'si__dictionary');
+
+$objSiDict->change(level => 1);
+
+ok($objSiDict->lt("\x{D96}", "\x{D82}"));
+ok($objSiDict->lt("\x{D82}", "\x{D83}"));
+ok($objSiDict->lt("\x{D83}", "\x{D9A}"));
+
+ok($objSiDict->gt("\x{DA5}", "\x{DA2}"));
+ok($objSiDict->eq("\x{DA5}", "\x{DA2}\x{DCA}\x{DA4}"));
+ok($objSiDict->lt("\x{DA5}", "\x{DA3}"));
+
+$objSiDict->change(level => 2);
+
+ok($objSiDict->gt("\x{DA5}", "\x{DA2}\x{DCA}\x{DA4}"));
+
diff --git a/cpan/Unicode-Collate/t/loc_sk.t b/cpan/Unicode-Collate/t/loc_sk.t
index 79ed15fe49..c6ad615b58 100644
--- a/cpan/Unicode-Collate/t/loc_sk.t
+++ b/cpan/Unicode-Collate/t/loc_sk.t
@@ -12,7 +12,7 @@ BEGIN {
}
use Test;
-BEGIN { plan tests => 52 };
+BEGIN { plan tests => 58 };
use strict;
use warnings;
@@ -37,38 +37,42 @@ ok($objSk->lt("h", "ch"));
ok($objSk->gt("i", "ch"));
ok($objSk->lt("o", "o\x{302}"));
ok($objSk->gt("p", "o\x{302}"));
+ok($objSk->lt("r", "r\x{30C}"));
+ok($objSk->gt("s", "r\x{30C}"));
ok($objSk->lt("s", "s\x{30C}"));
ok($objSk->gt("t", "s\x{30C}"));
ok($objSk->lt("z", "z\x{30C}"));
ok($objSk->lt("z\x{30C}", "\x{292}")); # U+0292 EZH
-# 14
+# 16
$objSk->change(level => 2);
ok($objSk->eq("a\x{308}", "A\x{308}"));
ok($objSk->eq("c\x{30C}", "C\x{30C}"));
ok($objSk->eq("o\x{302}", "O\x{302}"));
+ok($objSk->eq("r\x{30C}", "R\x{30C}"));
ok($objSk->eq("s\x{30C}", "S\x{30C}"));
ok($objSk->eq("z\x{30C}", "Z\x{30C}"));
ok($objSk->eq("ch", "cH"));
ok($objSk->eq("cH", "Ch"));
ok($objSk->eq("Ch", "CH"));
-# 22
+# 25
$objSk->change(level => 3);
ok($objSk->lt("a\x{308}", "A\x{308}"));
ok($objSk->lt("c\x{30C}", "C\x{30C}"));
ok($objSk->lt("o\x{302}", "O\x{302}"));
+ok($objSk->lt("r\x{30C}", "R\x{30C}"));
ok($objSk->lt("s\x{30C}", "S\x{30C}"));
ok($objSk->lt("z\x{30C}", "Z\x{30C}"));
ok($objSk->lt("ch", "cH"));
ok($objSk->lt("cH", "Ch"));
ok($objSk->lt("Ch", "CH"));
-# 30
+# 34
ok($objSk->eq("a\x{308}", pack('U', 0xE4)));
ok($objSk->eq("A\x{308}", pack('U', 0xC4)));
@@ -78,12 +82,14 @@ ok($objSk->eq("c\x{30C}", "\x{10D}"));
ok($objSk->eq("C\x{30C}", "\x{10C}"));
ok($objSk->eq("o\x{302}", pack('U', 0xF4)));
ok($objSk->eq("O\x{302}", pack('U', 0xD4)));
+ok($objSk->eq("r\x{30C}", "\x{159}"));
+ok($objSk->eq("R\x{30C}", "\x{158}"));
ok($objSk->eq("s\x{30C}", "\x{161}"));
ok($objSk->eq("S\x{30C}", "\x{160}"));
ok($objSk->eq("z\x{30C}", "\x{17E}"));
ok($objSk->eq("Z\x{30C}", "\x{17D}"));
-# 42
+# 48
ok($objSk->eq("o\x{302}\x{300}", "\x{1ED3}"));
ok($objSk->eq("O\x{302}\x{300}", "\x{1ED2}"));
@@ -96,4 +102,4 @@ ok($objSk->eq("O\x{302}\x{309}", "\x{1ED4}"));
ok($objSk->eq("o\x{302}\x{323}", "\x{1ED9}"));
ok($objSk->eq("O\x{302}\x{323}", "\x{1ED8}"));
-# 52
+# 58
diff --git a/cpan/Unicode-Collate/t/loc_sr.t b/cpan/Unicode-Collate/t/loc_sr.t
index 70a0a934f2..ab2547f4df 100644
--- a/cpan/Unicode-Collate/t/loc_sr.t
+++ b/cpan/Unicode-Collate/t/loc_sr.t
@@ -12,7 +12,7 @@ BEGIN {
}
use Test;
-BEGIN { plan tests => 130 };
+BEGIN { plan tests => 210 };
use strict;
use warnings;
@@ -29,31 +29,44 @@ ok($objSr->getlocale, 'sr');
$objSr->change(level => 1);
-ok($objSr->gt("\x{4E5}", "\x{438}"));
-ok($objSr->gt("\x{4E4}", "\x{418}"));
-ok($objSr->gt("\x{439}", "\x{438}"));
-ok($objSr->gt("\x{419}", "\x{418}"));
-
-# 6
-
ok($objSr->eq("\x{4D1}", "\x{430}"));
ok($objSr->eq("\x{4D0}", "\x{410}"));
ok($objSr->eq("\x{4D3}", "\x{430}"));
ok($objSr->eq("\x{4D2}", "\x{410}"));
+ok($objSr->eq("\x{4DB}", "\x{4D9}"));
+ok($objSr->eq("\x{4DA}", "\x{4D8}"));
ok($objSr->eq("\x{453}", "\x{433}"));
ok($objSr->eq("\x{403}", "\x{413}"));
+ok($objSr->eq("\x{450}", "\x{435}")); # not contraction
+ok($objSr->eq("\x{400}", "\x{415}")); # not contraction
+ok($objSr->eq("\x{451}", "\x{435}")); # not contraction
+ok($objSr->eq("\x{401}", "\x{415}")); # not contraction
ok($objSr->eq("\x{4D7}", "\x{435}"));
ok($objSr->eq("\x{4D6}", "\x{415}"));
+ok($objSr->eq("\x{4C2}", "\x{436}")); # not contraction
+ok($objSr->eq("\x{4C1}", "\x{416}")); # not contraction
ok($objSr->eq("\x{4DD}", "\x{436}"));
ok($objSr->eq("\x{4DC}", "\x{416}"));
ok($objSr->eq("\x{4DF}", "\x{437}"));
ok($objSr->eq("\x{4DE}", "\x{417}"));
+ok($objSr->eq("\x{45D}", "\x{438}")); # not contraction
+ok($objSr->eq("\x{40D}", "\x{418}")); # not contraction
+ok($objSr->eq("\x{4E3}", "\x{438}")); # not contraction
+ok($objSr->eq("\x{4E2}", "\x{418}")); # not contraction
+ok($objSr->eq("\x{4E5}", "\x{438}"));
+ok($objSr->eq("\x{4E4}", "\x{418}"));
ok($objSr->eq("\x{457}", "\x{456}"));
ok($objSr->eq("\x{407}", "\x{406}"));
+ok($objSr->eq("\x{439}", "\x{438}"));
+ok($objSr->eq("\x{419}", "\x{418}"));
ok($objSr->eq("\x{4E7}", "\x{43E}"));
ok($objSr->eq("\x{4E6}", "\x{41E}"));
+ok($objSr->eq("\x{4EB}", "\x{4E9}"));
+ok($objSr->eq("\x{4EA}", "\x{4E8}"));
ok($objSr->eq("\x{45C}", "\x{43A}"));
ok($objSr->eq("\x{40C}", "\x{41A}"));
+ok($objSr->eq("\x{4EF}", "\x{443}")); # not contraction
+ok($objSr->eq("\x{4EE}", "\x{423}")); # not contraction
ok($objSr->eq("\x{45E}", "\x{443}"));
ok($objSr->eq("\x{40E}", "\x{423}"));
ok($objSr->eq("\x{4F1}", "\x{443}"));
@@ -66,8 +79,10 @@ ok($objSr->eq("\x{4F9}", "\x{44B}"));
ok($objSr->eq("\x{4F8}", "\x{42B}"));
ok($objSr->eq("\x{4ED}", "\x{44D}"));
ok($objSr->eq("\x{4EC}", "\x{42D}"));
+ok($objSr->eq("\x{477}", "\x{475}"));
+ok($objSr->eq("\x{476}", "\x{474}"));
-# 36
+# 54
$objSr->change(level => 2);
@@ -75,20 +90,40 @@ ok($objSr->gt("\x{4D1}", "\x{430}"));
ok($objSr->gt("\x{4D0}", "\x{410}"));
ok($objSr->gt("\x{4D3}", "\x{430}"));
ok($objSr->gt("\x{4D2}", "\x{410}"));
+ok($objSr->gt("\x{4DB}", "\x{4D9}"));
+ok($objSr->gt("\x{4DA}", "\x{4D8}"));
ok($objSr->gt("\x{453}", "\x{433}"));
ok($objSr->gt("\x{403}", "\x{413}"));
+ok($objSr->gt("\x{450}", "\x{435}")); # not contraction
+ok($objSr->gt("\x{400}", "\x{415}")); # not contraction
+ok($objSr->gt("\x{451}", "\x{435}")); # not contraction
+ok($objSr->gt("\x{401}", "\x{415}")); # not contraction
ok($objSr->gt("\x{4D7}", "\x{435}"));
ok($objSr->gt("\x{4D6}", "\x{415}"));
+ok($objSr->gt("\x{4C2}", "\x{436}")); # not contraction
+ok($objSr->gt("\x{4C1}", "\x{416}")); # not contraction
ok($objSr->gt("\x{4DD}", "\x{436}"));
ok($objSr->gt("\x{4DC}", "\x{416}"));
ok($objSr->gt("\x{4DF}", "\x{437}"));
ok($objSr->gt("\x{4DE}", "\x{417}"));
+ok($objSr->gt("\x{45D}", "\x{438}")); # not contraction
+ok($objSr->gt("\x{40D}", "\x{418}")); # not contraction
+ok($objSr->gt("\x{4E3}", "\x{438}")); # not contraction
+ok($objSr->gt("\x{4E2}", "\x{418}")); # not contraction
+ok($objSr->gt("\x{4E5}", "\x{438}"));
+ok($objSr->gt("\x{4E4}", "\x{418}"));
ok($objSr->gt("\x{457}", "\x{456}"));
ok($objSr->gt("\x{407}", "\x{406}"));
+ok($objSr->gt("\x{439}", "\x{438}"));
+ok($objSr->gt("\x{419}", "\x{418}"));
ok($objSr->gt("\x{4E7}", "\x{43E}"));
ok($objSr->gt("\x{4E6}", "\x{41E}"));
+ok($objSr->gt("\x{4EB}", "\x{4E9}"));
+ok($objSr->gt("\x{4EA}", "\x{4E8}"));
ok($objSr->gt("\x{45C}", "\x{43A}"));
ok($objSr->gt("\x{40C}", "\x{41A}"));
+ok($objSr->gt("\x{4EF}", "\x{443}")); # not contraction
+ok($objSr->gt("\x{4EE}", "\x{423}")); # not contraction
ok($objSr->gt("\x{45E}", "\x{443}"));
ok($objSr->gt("\x{40E}", "\x{423}"));
ok($objSr->gt("\x{4F1}", "\x{443}"));
@@ -101,77 +136,66 @@ ok($objSr->gt("\x{4F9}", "\x{44B}"));
ok($objSr->gt("\x{4F8}", "\x{42B}"));
ok($objSr->gt("\x{4ED}", "\x{44D}"));
ok($objSr->gt("\x{4EC}", "\x{42D}"));
+ok($objSr->gt("\x{477}", "\x{475}"));
+ok($objSr->gt("\x{476}", "\x{474}"));
-# 66
+# 106
$objSr->change(level => 3);
-ok($objSr->eq("\x{4D1}", "\x{430}\x{306}"));
-ok($objSr->eq("\x{4D0}", "\x{410}\x{306}"));
-ok($objSr->eq("\x{4D3}", "\x{430}\x{308}"));
-ok($objSr->eq("\x{4D2}", "\x{410}\x{308}"));
-ok($objSr->eq("\x{453}", "\x{433}\x{301}"));
-ok($objSr->eq("\x{403}", "\x{413}\x{301}"));
-ok($objSr->eq("\x{4D7}", "\x{435}\x{306}"));
-ok($objSr->eq("\x{4D6}", "\x{415}\x{306}"));
-ok($objSr->eq("\x{4DD}", "\x{436}\x{308}"));
-ok($objSr->eq("\x{4DC}", "\x{416}\x{308}"));
-ok($objSr->eq("\x{4DF}", "\x{437}\x{308}"));
-ok($objSr->eq("\x{4DE}", "\x{417}\x{308}"));
-ok($objSr->eq("\x{4E5}", "\x{438}\x{308}"));
-ok($objSr->eq("\x{4E4}", "\x{418}\x{308}"));
-ok($objSr->eq("\x{457}", "\x{456}\x{308}"));
-ok($objSr->eq("\x{407}", "\x{406}\x{308}"));
-ok($objSr->eq("\x{439}", "\x{438}\x{306}"));
-ok($objSr->eq("\x{419}", "\x{418}\x{306}"));
-ok($objSr->eq("\x{4E7}", "\x{43E}\x{308}"));
-ok($objSr->eq("\x{4E6}", "\x{41E}\x{308}"));
-ok($objSr->eq("\x{45C}", "\x{43A}\x{301}"));
-ok($objSr->eq("\x{40C}", "\x{41A}\x{301}"));
-ok($objSr->eq("\x{45E}", "\x{443}\x{306}"));
-ok($objSr->eq("\x{40E}", "\x{423}\x{306}"));
-ok($objSr->eq("\x{4F1}", "\x{443}\x{308}"));
-ok($objSr->eq("\x{4F0}", "\x{423}\x{308}"));
-ok($objSr->eq("\x{4F3}", "\x{443}\x{30B}"));
-ok($objSr->eq("\x{4F2}", "\x{423}\x{30B}"));
-ok($objSr->eq("\x{4F5}", "\x{447}\x{308}"));
-ok($objSr->eq("\x{4F4}", "\x{427}\x{308}"));
-ok($objSr->eq("\x{4F9}", "\x{44B}\x{308}"));
-ok($objSr->eq("\x{4F8}", "\x{42B}\x{308}"));
-ok($objSr->eq("\x{4ED}", "\x{44D}\x{308}"));
-ok($objSr->eq("\x{4EC}", "\x{42D}\x{308}"));
-
-# 100
-
-ok($objSr->eq("\x{4D1}", "\x{430}\0\x{306}"));
-ok($objSr->eq("\x{4D0}", "\x{410}\0\x{306}"));
-ok($objSr->eq("\x{4D3}", "\x{430}\0\x{308}"));
-ok($objSr->eq("\x{4D2}", "\x{410}\0\x{308}"));
-ok($objSr->eq("\x{453}", "\x{433}\0\x{301}"));
-ok($objSr->eq("\x{403}", "\x{413}\0\x{301}"));
-ok($objSr->eq("\x{4D7}", "\x{435}\0\x{306}"));
-ok($objSr->eq("\x{4D6}", "\x{415}\0\x{306}"));
-ok($objSr->eq("\x{4DD}", "\x{436}\0\x{308}"));
-ok($objSr->eq("\x{4DC}", "\x{416}\0\x{308}"));
-ok($objSr->eq("\x{4DF}", "\x{437}\0\x{308}"));
-ok($objSr->eq("\x{4DE}", "\x{417}\0\x{308}"));
-ok($objSr->eq("\x{457}", "\x{456}\0\x{308}"));
-ok($objSr->eq("\x{407}", "\x{406}\0\x{308}"));
-ok($objSr->eq("\x{4E7}", "\x{43E}\0\x{308}"));
-ok($objSr->eq("\x{4E6}", "\x{41E}\0\x{308}"));
-ok($objSr->eq("\x{45C}", "\x{43A}\0\x{301}"));
-ok($objSr->eq("\x{40C}", "\x{41A}\0\x{301}"));
-ok($objSr->eq("\x{45E}", "\x{443}\0\x{306}"));
-ok($objSr->eq("\x{40E}", "\x{423}\0\x{306}"));
-ok($objSr->eq("\x{4F1}", "\x{443}\0\x{308}"));
-ok($objSr->eq("\x{4F0}", "\x{423}\0\x{308}"));
-ok($objSr->eq("\x{4F3}", "\x{443}\0\x{30B}"));
-ok($objSr->eq("\x{4F2}", "\x{423}\0\x{30B}"));
-ok($objSr->eq("\x{4F5}", "\x{447}\0\x{308}"));
-ok($objSr->eq("\x{4F4}", "\x{427}\0\x{308}"));
-ok($objSr->eq("\x{4F9}", "\x{44B}\0\x{308}"));
-ok($objSr->eq("\x{4F8}", "\x{42B}\0\x{308}"));
-ok($objSr->eq("\x{4ED}", "\x{44D}\0\x{308}"));
-ok($objSr->eq("\x{4EC}", "\x{42D}\0\x{308}"));
-
-# 130
+for my $i ("", "\0") {
+ ok($objSr->eq("\x{4D1}", "\x{430}$i\x{306}"));
+ ok($objSr->eq("\x{4D0}", "\x{410}$i\x{306}"));
+ ok($objSr->eq("\x{4D3}", "\x{430}$i\x{308}"));
+ ok($objSr->eq("\x{4D2}", "\x{410}$i\x{308}"));
+ ok($objSr->eq("\x{4DB}", "\x{4D9}$i\x{308}"));
+ ok($objSr->eq("\x{4DA}", "\x{4D8}$i\x{308}"));
+ ok($objSr->eq("\x{453}", "\x{433}$i\x{301}"));
+ ok($objSr->eq("\x{403}", "\x{413}$i\x{301}"));
+ ok($objSr->eq("\x{450}", "\x{435}$i\x{300}")); # not contraction
+ ok($objSr->eq("\x{400}", "\x{415}$i\x{300}")); # not contraction
+ ok($objSr->eq("\x{451}", "\x{435}$i\x{308}")); # not contraction
+ ok($objSr->eq("\x{401}", "\x{415}$i\x{308}")); # not contraction
+ ok($objSr->eq("\x{4D7}", "\x{435}$i\x{306}"));
+ ok($objSr->eq("\x{4D6}", "\x{415}$i\x{306}"));
+ ok($objSr->eq("\x{4C2}", "\x{436}$i\x{306}")); # not contraction
+ ok($objSr->eq("\x{4C1}", "\x{416}$i\x{306}")); # not contraction
+ ok($objSr->eq("\x{4DD}", "\x{436}$i\x{308}"));
+ ok($objSr->eq("\x{4DC}", "\x{416}$i\x{308}"));
+ ok($objSr->eq("\x{4DF}", "\x{437}$i\x{308}"));
+ ok($objSr->eq("\x{4DE}", "\x{417}$i\x{308}"));
+ ok($objSr->eq("\x{45D}", "\x{438}$i\x{300}")); # not contraction
+ ok($objSr->eq("\x{40D}", "\x{418}$i\x{300}")); # not contraction
+ ok($objSr->eq("\x{4E3}", "\x{438}$i\x{304}")); # not contraction
+ ok($objSr->eq("\x{4E2}", "\x{418}$i\x{304}")); # not contraction
+ ok($objSr->eq("\x{4E5}", "\x{438}$i\x{308}"));
+ ok($objSr->eq("\x{4E4}", "\x{418}$i\x{308}"));
+ ok($objSr->eq("\x{457}", "\x{456}$i\x{308}"));
+ ok($objSr->eq("\x{407}", "\x{406}$i\x{308}"));
+ ok($objSr->eq("\x{439}", "\x{438}$i\x{306}"));
+ ok($objSr->eq("\x{419}", "\x{418}$i\x{306}"));
+ ok($objSr->eq("\x{4E7}", "\x{43E}$i\x{308}"));
+ ok($objSr->eq("\x{4E6}", "\x{41E}$i\x{308}"));
+ ok($objSr->eq("\x{4EB}", "\x{4E9}$i\x{308}"));
+ ok($objSr->eq("\x{4EA}", "\x{4E8}$i\x{308}"));
+ ok($objSr->eq("\x{45C}", "\x{43A}$i\x{301}"));
+ ok($objSr->eq("\x{40C}", "\x{41A}$i\x{301}"));
+ ok($objSr->eq("\x{4EF}", "\x{443}$i\x{304}")); # not contraction
+ ok($objSr->eq("\x{4EE}", "\x{423}$i\x{304}")); # not contraction
+ ok($objSr->eq("\x{45E}", "\x{443}$i\x{306}"));
+ ok($objSr->eq("\x{40E}", "\x{423}$i\x{306}"));
+ ok($objSr->eq("\x{4F1}", "\x{443}$i\x{308}"));
+ ok($objSr->eq("\x{4F0}", "\x{423}$i\x{308}"));
+ ok($objSr->eq("\x{4F3}", "\x{443}$i\x{30B}"));
+ ok($objSr->eq("\x{4F2}", "\x{423}$i\x{30B}"));
+ ok($objSr->eq("\x{4F5}", "\x{447}$i\x{308}"));
+ ok($objSr->eq("\x{4F4}", "\x{427}$i\x{308}"));
+ ok($objSr->eq("\x{4F9}", "\x{44B}$i\x{308}"));
+ ok($objSr->eq("\x{4F8}", "\x{42B}$i\x{308}"));
+ ok($objSr->eq("\x{4ED}", "\x{44D}$i\x{308}"));
+ ok($objSr->eq("\x{4EC}", "\x{42D}$i\x{308}"));
+ ok($objSr->eq("\x{477}", "\x{475}$i\x{30F}"));
+ ok($objSr->eq("\x{476}", "\x{474}$i\x{30F}"));
+}
+
+# 210
diff --git a/cpan/Unicode-Collate/t/loc_srla.t b/cpan/Unicode-Collate/t/loc_srla.t
new file mode 100644
index 0000000000..9b6ba0a927
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_srla.t
@@ -0,0 +1,186 @@
+
+BEGIN {
+ unless ("A" eq pack('U', 0x41)) {
+ print "1..0 # Unicode::Collate " .
+ "cannot stringify a Unicode code point\n";
+ exit 0;
+ }
+ if ($ENV{PERL_CORE}) {
+ chdir('t') if -d 't';
+ @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+ }
+}
+
+use Test;
+BEGIN { plan tests => 118 };
+
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+ok(1);
+
+#########################
+
+my $objSrLatn = Unicode::Collate::Locale->
+ new(locale => 'SR-LATN', normalization => undef);
+
+ok($objSrLatn->getlocale, 'sr_Latn');
+
+$objSrLatn->change(level => 1);
+
+ok($objSrLatn->lt("c", "c\x{30C}"));
+ok($objSrLatn->lt("c\x{30C}", "c\x{301}"));
+ok($objSrLatn->gt("d", "c\x{301}"));
+ok($objSrLatn->lt("d", "dz\x{30C}"));
+ok($objSrLatn->lt("dzz", "dz\x{30C}"));
+ok($objSrLatn->lt("dz\x{30C}", "d\x{335}"));
+ok($objSrLatn->gt("e", "d\x{335}"));
+ok($objSrLatn->lt("l", "lj"));
+ok($objSrLatn->lt("lz","lj"));
+ok($objSrLatn->gt("m", "lj"));
+ok($objSrLatn->lt("n", "nj"));
+ok($objSrLatn->lt("nz","nj"));
+ok($objSrLatn->gt("o", "nj"));
+ok($objSrLatn->lt("s", "s\x{30C}"));
+ok($objSrLatn->lt("sz","s\x{30C}"));
+ok($objSrLatn->gt("t", "s\x{30C}"));
+ok($objSrLatn->lt("z", "z\x{30C}"));
+ok($objSrLatn->lt("zz","z\x{30C}"));
+ok($objSrLatn->lt("z\x{30C}", "\x{292}")); # U+0292 EZH
+
+# 21
+
+# not tailored
+ok($objSrLatn->lt("dZ\x{30C}","dz\x{30C}"));
+ok($objSrLatn->lt("lJ", "lj"));
+ok($objSrLatn->lt("nJ", "nj"));
+
+# 24
+
+$objSrLatn->change(level => 2);
+
+ok($objSrLatn->eq("c\x{30C}", "C\x{30C}"));
+ok($objSrLatn->eq("c\x{301}", "C\x{301}"));
+ok($objSrLatn->eq("dz\x{30C}","Dz\x{30C}"));
+ok($objSrLatn->eq("Dz\x{30C}","DZ\x{30C}"));
+ok($objSrLatn->eq("d\x{335}", "D\x{335}"));
+ok($objSrLatn->eq("lj", "Lj"));
+ok($objSrLatn->eq("Lj", "LJ"));
+ok($objSrLatn->eq("nj", "Nj"));
+ok($objSrLatn->eq("Nj", "NJ"));
+ok($objSrLatn->eq("s\x{30C}", "S\x{30C}"));
+ok($objSrLatn->eq("z\x{30C}", "Z\x{30C}"));
+
+# 35
+
+ok($objSrLatn->eq("dz\x{30C}", "\x{1C6}"));
+ok($objSrLatn->eq("Dz\x{30C}", "\x{1C6}"));
+ok($objSrLatn->eq("Dz\x{30C}", "\x{1C5}"));
+ok($objSrLatn->eq("DZ\x{30C}", "\x{1C5}"));
+ok($objSrLatn->eq("DZ\x{30C}", "\x{1C4}"));
+
+ok($objSrLatn->eq("lj", "\x{1C9}"));
+ok($objSrLatn->eq("Lj", "\x{1C9}"));
+ok($objSrLatn->eq("Lj", "\x{1C8}"));
+ok($objSrLatn->eq("LJ", "\x{1C8}"));
+ok($objSrLatn->eq("LJ", "\x{1C7}"));
+
+ok($objSrLatn->eq("nj", "\x{1CC}"));
+ok($objSrLatn->eq("Nj", "\x{1CC}"));
+ok($objSrLatn->eq("Nj", "\x{1CB}"));
+ok($objSrLatn->eq("NJ", "\x{1CB}"));
+ok($objSrLatn->eq("NJ", "\x{1CA}"));
+
+# 50
+
+$objSrLatn->change(level => 3);
+
+ok($objSrLatn->lt("c\x{30C}", "C\x{30C}"));
+ok($objSrLatn->lt("c\x{301}", "C\x{301}"));
+ok($objSrLatn->lt("dz\x{30C}","Dz\x{30C}"));
+ok($objSrLatn->lt("Dz\x{30C}","DZ\x{30C}"));
+ok($objSrLatn->lt("d\x{335}", "D\x{335}"));
+ok($objSrLatn->lt("lj", "Lj"));
+ok($objSrLatn->lt("Lj", "LJ"));
+ok($objSrLatn->lt("nj", "Nj"));
+ok($objSrLatn->lt("Nj", "NJ"));
+ok($objSrLatn->lt("s\x{30C}", "S\x{30C}"));
+ok($objSrLatn->lt("z\x{30C}", "Z\x{30C}"));
+
+# 61
+
+ok($objSrLatn->lt("dz\x{30C}", "\x{1C6}"));
+ok($objSrLatn->gt("Dz\x{30C}", "\x{1C6}"));
+ok($objSrLatn->lt("Dz\x{30C}", "\x{1C5}"));
+ok($objSrLatn->gt("DZ\x{30C}", "\x{1C5}"));
+ok($objSrLatn->lt("DZ\x{30C}", "\x{1C4}"));
+
+ok($objSrLatn->lt("lj", "\x{1C9}"));
+ok($objSrLatn->gt("Lj", "\x{1C9}"));
+ok($objSrLatn->lt("Lj", "\x{1C8}"));
+ok($objSrLatn->gt("LJ", "\x{1C8}"));
+ok($objSrLatn->lt("LJ", "\x{1C7}"));
+
+ok($objSrLatn->lt("nj", "\x{1CC}"));
+ok($objSrLatn->gt("Nj", "\x{1CC}"));
+ok($objSrLatn->lt("Nj", "\x{1CB}"));
+ok($objSrLatn->gt("NJ", "\x{1CB}"));
+ok($objSrLatn->lt("NJ", "\x{1CA}"));
+
+# 76
+
+ok($objSrLatn->eq("c\x{30C}", "\x{10D}"));
+ok($objSrLatn->eq("C\x{30C}", "\x{10C}"));
+ok($objSrLatn->eq("c\x{301}", "\x{107}"));
+ok($objSrLatn->eq("c\x{341}", "\x{107}"));
+ok($objSrLatn->eq("C\x{301}", "\x{106}"));
+ok($objSrLatn->eq("C\x{341}", "\x{106}"));
+ok($objSrLatn->eq("dz\x{30C}", "d\x{17E}"));
+ok($objSrLatn->eq("dZ\x{30C}", "d\x{17D}"));
+ok($objSrLatn->eq("Dz\x{30C}", "D\x{17E}"));
+ok($objSrLatn->eq("DZ\x{30C}", "D\x{17D}"));
+ok($objSrLatn->eq("d\x{335}", "\x{111}"));
+ok($objSrLatn->eq("D\x{335}", "\x{110}"));
+ok($objSrLatn->eq("s\x{30C}", "\x{161}"));
+ok($objSrLatn->eq("S\x{30C}", "\x{160}"));
+ok($objSrLatn->eq("z\x{30C}", "\x{17E}"));
+ok($objSrLatn->eq("Z\x{30C}", "\x{17D}"));
+
+# 92
+
+$objSrLatn->change(upper_before_lower => 1);
+
+ok($objSrLatn->gt("c\x{30C}", "C\x{30C}"));
+ok($objSrLatn->gt("c\x{301}", "C\x{301}"));
+ok($objSrLatn->gt("dz\x{30C}","Dz\x{30C}"));
+ok($objSrLatn->gt("Dz\x{30C}","DZ\x{30C}"));
+ok($objSrLatn->gt("d\x{335}", "D\x{335}"));
+ok($objSrLatn->gt("lj", "Lj"));
+ok($objSrLatn->gt("Lj", "LJ"));
+ok($objSrLatn->gt("nj", "Nj"));
+ok($objSrLatn->gt("Nj", "NJ"));
+ok($objSrLatn->gt("s\x{30C}", "S\x{30C}"));
+ok($objSrLatn->gt("z\x{30C}", "Z\x{30C}"));
+
+# 103
+
+ok($objSrLatn->lt("DZ\x{30C}", "\x{1C4}"));
+ok($objSrLatn->gt("Dz\x{30C}", "\x{1C4}"));
+ok($objSrLatn->lt("Dz\x{30C}", "\x{1C5}"));
+ok($objSrLatn->gt("dz\x{30C}", "\x{1C5}"));
+ok($objSrLatn->lt("dz\x{30C}", "\x{1C6}"));
+
+ok($objSrLatn->lt("LJ", "\x{1C7}"));
+ok($objSrLatn->gt("Lj", "\x{1C7}"));
+ok($objSrLatn->lt("Lj", "\x{1C8}"));
+ok($objSrLatn->gt("lj", "\x{1C8}"));
+ok($objSrLatn->lt("lj", "\x{1C9}"));
+
+ok($objSrLatn->lt("NJ", "\x{1CA}"));
+ok($objSrLatn->gt("Nj", "\x{1CA}"));
+ok($objSrLatn->lt("Nj", "\x{1CB}"));
+ok($objSrLatn->gt("nj", "\x{1CB}"));
+ok($objSrLatn->lt("nj", "\x{1CC}"));
+
+# 118
diff --git a/cpan/Unicode-Collate/t/loc_sv.t b/cpan/Unicode-Collate/t/loc_sv.t
index c28632ea06..4d7c85034b 100644
--- a/cpan/Unicode-Collate/t/loc_sv.t
+++ b/cpan/Unicode-Collate/t/loc_sv.t
@@ -12,7 +12,7 @@ BEGIN {
}
use Test;
-BEGIN { plan tests => 117 };
+BEGIN { plan tests => 115 };
use strict;
use warnings;
@@ -57,6 +57,7 @@ ok($objSv->lt($ouml, "\x{1C0}"));
ok($objSv->eq('d', "\x{111}"));
ok($objSv->eq("\x{111}", $eth));
+ok($objSv->eq('v', 'w'));
ok($objSv->eq('y', $uuml));
ok($objSv->eq($uuml, "\x{171}"));
@@ -67,12 +68,13 @@ ok($objSv->eq($ostk, "\x{151}"));
ok($objSv->eq("\x{151}", "\x{153}"));
ok($objSv->eq("\x{153}", $ocrc));
-# 16
+# 17
$objSv->change(level => 2);
ok($objSv->lt('d', "\x{111}"));
ok($objSv->lt("\x{111}", $eth));
+ok($objSv->lt('v', 'w'));
ok($objSv->lt('y', $uuml));
ok($objSv->lt($uuml, "\x{171}"));
@@ -83,16 +85,14 @@ ok($objSv->lt($ostk, "\x{151}"));
ok($objSv->lt("\x{151}", "\x{153}"));
ok($objSv->lt("\x{153}", $ocrc));
-# 26
+# 28
ok($objSv->eq("\x{111}", "\x{110}"));
ok($objSv->eq($eth, $ETH));
ok($objSv->eq('th', $thrn));
ok($objSv->eq($thrn, 'TH'));
ok($objSv->eq('TH', $THRN));
-ok($objSv->eq('v', 'w'));
-ok($objSv->eq('w', 'V'));
-ok($objSv->eq('V', 'W'));
+ok($objSv->eq('w', 'W'));
ok($objSv->eq($uuml, $Uuml));
ok($objSv->eq("\x{171}", "\x{170}"));
ok($objSv->eq($arng, $Arng));
@@ -115,9 +115,7 @@ ok($objSv->lt($eth, $ETH));
ok($objSv->lt('th', $thrn));
ok($objSv->lt($thrn, 'TH'));
ok($objSv->lt('TH', $THRN));
-ok($objSv->lt('v', 'w'));
-ok($objSv->lt('w', 'V'));
-ok($objSv->lt('V', 'W'));
+ok($objSv->lt('w', 'W'));
ok($objSv->lt($uuml, $Uuml));
ok($objSv->lt("\x{171}", "\x{170}"));
ok($objSv->lt($arng, $Arng));
@@ -131,7 +129,7 @@ ok($objSv->lt("\x{151}", "\x{150}"));
ok($objSv->lt("\x{153}", "\x{152}"));
ok($objSv->lt($ocrc, $Ocrc));
-# 66
+# 64
ok($objSv->eq("d\x{335}", "\x{111}"));
ok($objSv->eq("D\x{335}", "\x{110}"));
@@ -154,7 +152,7 @@ ok($objSv->eq("O\x{30B}", "\x{150}"));
ok($objSv->eq("o\x{302}", $ocrc));
ok($objSv->eq("O\x{302}", $Ocrc));
-# 86
+# 84
ok($objSv->eq("u\x{308}\x{300}", "\x{1DC}"));
ok($objSv->eq("U\x{308}\x{300}", "\x{1DB}"));
@@ -178,7 +176,7 @@ ok($objSv->eq("O\x{308}\x{304}", "\x{22A}"));
ok($objSv->eq("o\x{338}\x{301}", "\x{1FF}"));
ok($objSv->eq("O\x{338}\x{301}", "\x{1FE}"));
-# 107
+# 105
ok($objSv->eq("o\x{302}\x{300}", "\x{1ED3}"));
ok($objSv->eq("O\x{302}\x{300}", "\x{1ED2}"));
@@ -191,4 +189,4 @@ ok($objSv->eq("O\x{302}\x{309}", "\x{1ED4}"));
ok($objSv->eq("o\x{302}\x{323}", "\x{1ED9}"));
ok($objSv->eq("O\x{302}\x{323}", "\x{1ED8}"));
-# 117
+# 115
diff --git a/cpan/Unicode-Collate/t/loc_svrf.t b/cpan/Unicode-Collate/t/loc_svrf.t
new file mode 100644
index 0000000000..8fc90a8bd3
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_svrf.t
@@ -0,0 +1,193 @@
+
+BEGIN {
+ unless ("A" eq pack('U', 0x41)) {
+ print "1..0 # Unicode::Collate " .
+ "cannot stringify a Unicode code point\n";
+ exit 0;
+ }
+ if ($ENV{PERL_CORE}) {
+ chdir('t') if -d 't';
+ @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+ }
+}
+
+use Test;
+BEGIN { plan tests => 115 };
+
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+ok(1);
+
+#########################
+
+my $eth = pack 'U', 0xF0;
+my $ETH = pack 'U', 0xD0;
+my $thrn = pack 'U', 0xFE;
+my $THRN = pack 'U', 0xDE;
+my $uuml = pack 'U', 0xFC;
+my $Uuml = pack 'U', 0xDC;
+my $arng = pack 'U', 0xE5;
+my $Arng = pack 'U', 0xC5;
+my $auml = pack 'U', 0xE4;
+my $Auml = pack 'U', 0xC4;
+my $ae = pack 'U', 0xE6;
+my $AE = pack 'U', 0xC6;
+my $ouml = pack 'U', 0xF6;
+my $Ouml = pack 'U', 0xD6;
+my $ostk = pack 'U', 0xF8;
+my $Ostk = pack 'U', 0xD8;
+my $ocrc = pack 'U', 0xF4;
+my $Ocrc = pack 'U', 0xD4;
+
+my $objSvReform = Unicode::Collate::Locale->
+ new(locale => 'SV-reform', normalization => undef);
+
+ok($objSvReform->getlocale, 'sv__reformed');
+
+$objSvReform->change(level => 1);
+
+ok($objSvReform->lt('z', $arng));
+ok($objSvReform->lt($arng, $auml));
+ok($objSvReform->lt($auml, $ouml));
+ok($objSvReform->lt($ouml, "\x{1C0}"));
+
+# 6
+
+ok($objSvReform->lt('v', 'w'));
+ok($objSvReform->gt('x', 'w'));
+
+ok($objSvReform->eq('d', "\x{111}"));
+ok($objSvReform->eq("\x{111}", $eth));
+ok($objSvReform->eq('y', $uuml));
+ok($objSvReform->eq($uuml, "\x{171}"));
+
+ok($objSvReform->eq($auml, $ae));
+ok($objSvReform->eq($ae, "\x{119}"));
+ok($objSvReform->eq($ouml, $ostk));
+ok($objSvReform->eq($ostk, "\x{151}"));
+ok($objSvReform->eq("\x{151}", "\x{153}"));
+ok($objSvReform->eq("\x{153}", $ocrc));
+
+# 18
+
+$objSvReform->change(level => 2);
+
+ok($objSvReform->lt('d', "\x{111}"));
+ok($objSvReform->lt("\x{111}", $eth));
+ok($objSvReform->lt('y', $uuml));
+ok($objSvReform->lt($uuml, "\x{171}"));
+
+ok($objSvReform->lt($auml, $ae));
+ok($objSvReform->lt($ae, "\x{119}"));
+ok($objSvReform->lt($ouml, $ostk));
+ok($objSvReform->lt($ostk, "\x{151}"));
+ok($objSvReform->lt("\x{151}", "\x{153}"));
+ok($objSvReform->lt("\x{153}", $ocrc));
+
+# 28
+
+ok($objSvReform->eq("\x{111}", "\x{110}"));
+ok($objSvReform->eq($eth, $ETH));
+ok($objSvReform->eq('th', $thrn));
+ok($objSvReform->eq($thrn, 'TH'));
+ok($objSvReform->eq('TH', $THRN));
+ok($objSvReform->eq('w', 'W'));
+ok($objSvReform->eq($uuml, $Uuml));
+ok($objSvReform->eq("\x{171}", "\x{170}"));
+ok($objSvReform->eq($arng, $Arng));
+ok($objSvReform->eq($auml, $Auml));
+ok($objSvReform->eq($ae, $AE));
+ok($objSvReform->eq($AE, "\x{1D2D}"));
+ok($objSvReform->eq("\x{119}", "\x{118}"));
+ok($objSvReform->eq($ouml, $Ouml));
+ok($objSvReform->eq($ostk, $Ostk));
+ok($objSvReform->eq("\x{151}", "\x{150}"));
+ok($objSvReform->eq("\x{153}", "\x{152}"));
+ok($objSvReform->eq($ocrc, $Ocrc));
+
+# 46
+
+$objSvReform->change(level => 3);
+
+ok($objSvReform->lt("\x{111}", "\x{110}"));
+ok($objSvReform->lt($eth, $ETH));
+ok($objSvReform->lt('th', $thrn));
+ok($objSvReform->lt($thrn, 'TH'));
+ok($objSvReform->lt('TH', $THRN));
+ok($objSvReform->lt('w', 'W'));
+ok($objSvReform->lt($uuml, $Uuml));
+ok($objSvReform->lt("\x{171}", "\x{170}"));
+ok($objSvReform->lt($arng, $Arng));
+ok($objSvReform->lt($auml, $Auml));
+ok($objSvReform->lt($ae, $AE));
+ok($objSvReform->lt($AE, "\x{1D2D}"));
+ok($objSvReform->lt("\x{119}", "\x{118}"));
+ok($objSvReform->lt($ouml, $Ouml));
+ok($objSvReform->lt($ostk, $Ostk));
+ok($objSvReform->lt("\x{151}", "\x{150}"));
+ok($objSvReform->lt("\x{153}", "\x{152}"));
+ok($objSvReform->lt($ocrc, $Ocrc));
+
+# 64
+
+ok($objSvReform->eq("d\x{335}", "\x{111}"));
+ok($objSvReform->eq("D\x{335}", "\x{110}"));
+ok($objSvReform->eq("u\x{308}", $uuml));
+ok($objSvReform->eq("U\x{308}", $Uuml));
+ok($objSvReform->eq("u\x{30B}", "\x{171}"));
+ok($objSvReform->eq("U\x{30B}", "\x{170}"));
+ok($objSvReform->eq("a\x{30A}", $arng));
+ok($objSvReform->eq("A\x{30A}", $Arng));
+ok($objSvReform->eq("a\x{308}", $auml));
+ok($objSvReform->eq("A\x{308}", $Auml));
+ok($objSvReform->eq("e\x{328}", "\x{119}"));
+ok($objSvReform->eq("E\x{328}", "\x{118}"));
+ok($objSvReform->eq("o\x{308}", $ouml));
+ok($objSvReform->eq("O\x{308}", $Ouml));
+ok($objSvReform->eq("o\x{338}", $ostk));
+ok($objSvReform->eq("O\x{338}", $Ostk));
+ok($objSvReform->eq("o\x{30B}", "\x{151}"));
+ok($objSvReform->eq("O\x{30B}", "\x{150}"));
+ok($objSvReform->eq("o\x{302}", $ocrc));
+ok($objSvReform->eq("O\x{302}", $Ocrc));
+
+# 84
+
+ok($objSvReform->eq("u\x{308}\x{300}", "\x{1DC}"));
+ok($objSvReform->eq("U\x{308}\x{300}", "\x{1DB}"));
+ok($objSvReform->eq("u\x{308}\x{301}", "\x{1D8}"));
+ok($objSvReform->eq("U\x{308}\x{301}", "\x{1D7}"));
+ok($objSvReform->eq("u\x{308}\x{304}", "\x{1D6}"));
+ok($objSvReform->eq("U\x{308}\x{304}", "\x{1D5}"));
+ok($objSvReform->eq("u\x{308}\x{30C}", "\x{1DA}"));
+ok($objSvReform->eq("U\x{308}\x{30C}", "\x{1D9}"));
+ok($objSvReform->eq("A\x{30A}", "\x{212B}"));
+ok($objSvReform->eq("a\x{30A}\x{301}", "\x{1FB}"));
+ok($objSvReform->eq("A\x{30A}\x{301}", "\x{1FA}"));
+ok($objSvReform->eq("a\x{308}\x{304}", "\x{1DF}"));
+ok($objSvReform->eq("A\x{308}\x{304}", "\x{1DE}"));
+ok($objSvReform->eq("\x{1FD}", "$ae\x{301}"));
+ok($objSvReform->eq("\x{1FC}", "$AE\x{301}"));
+ok($objSvReform->eq("\x{1E3}", "$ae\x{304}"));
+ok($objSvReform->eq("\x{1E2}", "$AE\x{304}"));
+ok($objSvReform->eq("o\x{308}\x{304}", "\x{22B}"));
+ok($objSvReform->eq("O\x{308}\x{304}", "\x{22A}"));
+ok($objSvReform->eq("o\x{338}\x{301}", "\x{1FF}"));
+ok($objSvReform->eq("O\x{338}\x{301}", "\x{1FE}"));
+
+# 105
+
+ok($objSvReform->eq("o\x{302}\x{300}", "\x{1ED3}"));
+ok($objSvReform->eq("O\x{302}\x{300}", "\x{1ED2}"));
+ok($objSvReform->eq("o\x{302}\x{301}", "\x{1ED1}"));
+ok($objSvReform->eq("O\x{302}\x{301}", "\x{1ED0}"));
+ok($objSvReform->eq("o\x{302}\x{303}", "\x{1ED7}"));
+ok($objSvReform->eq("O\x{302}\x{303}", "\x{1ED6}"));
+ok($objSvReform->eq("o\x{302}\x{309}", "\x{1ED5}"));
+ok($objSvReform->eq("O\x{302}\x{309}", "\x{1ED4}"));
+ok($objSvReform->eq("o\x{302}\x{323}", "\x{1ED9}"));
+ok($objSvReform->eq("O\x{302}\x{323}", "\x{1ED8}"));
+
+# 115
diff --git a/cpan/Unicode-Collate/t/loc_ta.t b/cpan/Unicode-Collate/t/loc_ta.t
new file mode 100644
index 0000000000..710860ec9a
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_ta.t
@@ -0,0 +1,85 @@
+
+BEGIN {
+ unless ("A" eq pack('U', 0x41)) {
+ print "1..0 # Unicode::Collate " .
+ "cannot stringify a Unicode code point\n";
+ exit 0;
+ }
+ if ($ENV{PERL_CORE}) {
+ chdir('t') if -d 't';
+ @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+ }
+}
+
+use Test;
+BEGIN { plan tests => 52 };
+
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+ok(1);
+
+#########################
+
+my $Kssa = "\x{B95}\x{BCD}\x{BB7}";
+
+my $objTa = Unicode::Collate::Locale->
+ new(locale => 'TA', normalization => undef);
+
+ok($objTa->getlocale, 'ta');
+
+$objTa->change(level => 1);
+
+ok($objTa->lt("\x{B94}", "\x{B82}"));
+ok($objTa->gt("\x{B83}", "\x{B82}"));
+ok($objTa->lt("\x{B83}", "\x{B95}\x{BCD}"));
+ok($objTa->gt("\x{B95}", "\x{B95}\x{BCD}"));
+ok($objTa->lt("\x{B95}", "\x{B99}\x{BCD}"));
+ok($objTa->gt("\x{B99}", "\x{B99}\x{BCD}"));
+ok($objTa->lt("\x{B99}", "\x{B9A}\x{BCD}"));
+ok($objTa->gt("\x{B9A}", "\x{B9A}\x{BCD}"));
+ok($objTa->lt("\x{B9A}", "\x{B9E}\x{BCD}"));
+ok($objTa->gt("\x{B9E}", "\x{B9E}\x{BCD}"));
+ok($objTa->lt("\x{B9E}", "\x{B9F}\x{BCD}"));
+ok($objTa->gt("\x{B9F}", "\x{B9F}\x{BCD}"));
+ok($objTa->lt("\x{B9F}", "\x{BA3}\x{BCD}"));
+ok($objTa->gt("\x{BA3}", "\x{BA3}\x{BCD}"));
+ok($objTa->lt("\x{BA3}", "\x{BA4}\x{BCD}"));
+ok($objTa->gt("\x{BA4}", "\x{BA4}\x{BCD}"));
+ok($objTa->lt("\x{BA4}", "\x{BA8}\x{BCD}"));
+ok($objTa->gt("\x{BA8}", "\x{BA8}\x{BCD}"));
+ok($objTa->lt("\x{BA8}", "\x{BAA}\x{BCD}"));
+ok($objTa->gt("\x{BAA}", "\x{BAA}\x{BCD}"));
+ok($objTa->lt("\x{BAA}", "\x{BAE}\x{BCD}"));
+ok($objTa->gt("\x{BAE}", "\x{BAE}\x{BCD}"));
+ok($objTa->lt("\x{BAE}", "\x{BAF}\x{BCD}"));
+ok($objTa->gt("\x{BAF}", "\x{BAF}\x{BCD}"));
+ok($objTa->lt("\x{BAF}", "\x{BB0}\x{BCD}"));
+ok($objTa->gt("\x{BB0}", "\x{BB0}\x{BCD}"));
+ok($objTa->lt("\x{BB0}", "\x{BB2}\x{BCD}"));
+ok($objTa->gt("\x{BB2}", "\x{BB2}\x{BCD}"));
+ok($objTa->lt("\x{BB2}", "\x{BB5}\x{BCD}"));
+ok($objTa->gt("\x{BB5}", "\x{BB5}\x{BCD}"));
+ok($objTa->lt("\x{BB5}", "\x{BB4}\x{BCD}"));
+ok($objTa->gt("\x{BB4}", "\x{BB4}\x{BCD}"));
+ok($objTa->lt("\x{BB4}", "\x{BB3}\x{BCD}"));
+ok($objTa->gt("\x{BB3}", "\x{BB3}\x{BCD}"));
+ok($objTa->lt("\x{BB3}", "\x{BB1}\x{BCD}"));
+ok($objTa->gt("\x{BB1}", "\x{BB1}\x{BCD}"));
+ok($objTa->lt("\x{BB1}", "\x{BA9}\x{BCD}"));
+ok($objTa->gt("\x{BA9}", "\x{BA9}\x{BCD}"));
+ok($objTa->lt("\x{BA9}", "\x{B9C}\x{BCD}"));
+ok($objTa->gt("\x{B9C}", "\x{B9C}\x{BCD}"));
+ok($objTa->lt("\x{B9C}", "\x{BB6}\x{BCD}"));
+ok($objTa->gt("\x{BB6}", "\x{BB6}\x{BCD}"));
+ok($objTa->lt("\x{BB6}", "\x{BB7}\x{BCD}"));
+ok($objTa->gt("\x{BB7}", "\x{BB7}\x{BCD}"));
+ok($objTa->lt("\x{BB7}", "\x{BB8}\x{BCD}"));
+ok($objTa->gt("\x{BB8}", "\x{BB8}\x{BCD}"));
+ok($objTa->lt("\x{BB8}", "\x{BB9}\x{BCD}"));
+ok($objTa->gt("\x{BB9}", "\x{BB9}\x{BCD}"));
+ok($objTa->lt("\x{BB9}", "${Kssa}\x{BCD}"));
+ok($objTa->gt("${Kssa}", "${Kssa}\x{BCD}"));
+
+# 52
diff --git a/cpan/Unicode-Collate/t/loc_te.t b/cpan/Unicode-Collate/t/loc_te.t
new file mode 100644
index 0000000000..38f68d062c
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_te.t
@@ -0,0 +1,36 @@
+
+BEGIN {
+ unless ("A" eq pack('U', 0x41)) {
+ print "1..0 # Unicode::Collate " .
+ "cannot stringify a Unicode code point\n";
+ exit 0;
+ }
+ if ($ENV{PERL_CORE}) {
+ chdir('t') if -d 't';
+ @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+ }
+}
+
+use Test;
+BEGIN { plan tests => 6 };
+
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+ok(1);
+
+#########################
+
+my $objTe = Unicode::Collate::Locale->
+ new(locale => 'TE', normalization => undef);
+
+ok($objTe->getlocale, 'te');
+
+$objTe->change(level => 1);
+
+ok($objTe->lt("\x{C14}", "\x{C01}"));
+ok($objTe->lt("\x{C01}", "\x{C02}"));
+ok($objTe->lt("\x{C02}", "\x{C03}"));
+ok($objTe->lt("\x{C03}", "\x{C15}"));
+
diff --git a/cpan/Unicode-Collate/t/loc_test.t b/cpan/Unicode-Collate/t/loc_test.t
index 8d7d74a816..84eb85fd58 100644
--- a/cpan/Unicode-Collate/t/loc_test.t
+++ b/cpan/Unicode-Collate/t/loc_test.t
@@ -12,7 +12,7 @@ BEGIN {
}
use Test;
-BEGIN { plan tests => 120 };
+BEGIN { plan tests => 130 };
use strict;
use warnings;
@@ -25,7 +25,7 @@ ok(1);
our (@listEs, @listEsT, @listFr);
@listEs = qw(
- cambio camella camello camelo Camerún
+ cambio camella camello camelo Camerún
chico chile Chile CHILE chocolate
cielo curso espacio espanto español esperanza lama líquido
llama Llama LLAMA llamar luz nos nueve ñu ojo
@@ -138,3 +138,16 @@ ok("@sortFr" eq "@listFr");
ok(ref($objEsT ->{$keyXS}), $UseXS);
}
# 120
+
+ok(Unicode::Collate::Locale::_locale('sr'), 'sr');
+ok(Unicode::Collate::Locale::_locale('sr_Cyrl'), 'sr');
+ok(Unicode::Collate::Locale::_locale('sr_Latn'), 'sr_Latn');
+ok(Unicode::Collate::Locale::_locale('sr_LATN'), 'sr_Latn');
+ok(Unicode::Collate::Locale::_locale('sr_latn'), 'sr_Latn');
+ok(Unicode::Collate::Locale::_locale('de'), 'default');
+ok(Unicode::Collate::Locale::_locale('de_phone'), 'de__phonebook');
+ok(Unicode::Collate::Locale::_locale('de__phonebook'), 'de__phonebook');
+ok(Unicode::Collate::Locale::_locale('de-phonebk'), 'de__phonebook');
+ok(Unicode::Collate::Locale::_locale('de--phonebk'), 'de__phonebook');
+
+# 130
diff --git a/cpan/Unicode-Collate/t/loc_th.t b/cpan/Unicode-Collate/t/loc_th.t
new file mode 100644
index 0000000000..c7833b70da
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_th.t
@@ -0,0 +1,81 @@
+
+BEGIN {
+ unless ("A" eq pack('U', 0x41)) {
+ print "1..0 # Unicode::Collate " .
+ "cannot stringify a Unicode code point\n";
+ exit 0;
+ }
+ if ($ENV{PERL_CORE}) {
+ chdir('t') if -d 't';
+ @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+ }
+}
+
+use Test;
+BEGIN { plan tests => 25 };
+
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+ok(1);
+
+#########################
+
+my $objTh = Unicode::Collate::Locale->
+ new(locale => 'TH', normalization => undef);
+
+
+ok($objTh->getlocale, 'th');
+
+$objTh->change(level => 1);
+
+# shifted
+
+ok($objTh->eq("\x{E2F}", ""));
+ok($objTh->eq("\x{E46}", ""));
+ok($objTh->eq("\x{E4F}", ""));
+
+# 5
+
+$objTh->change(variable => "non-ignorable");
+
+ok($objTh->lt("\x{E2F}", "\x{E46}"));
+ok($objTh->lt("\x{E46}", "\x{E4F}"));
+
+ok($objTh->lt("\x{E2E}", "\x{E4D}"));
+ok($objTh->lt("\x{E4D}", "\x{E30}"));
+
+ok($objTh->lt("\x{E44}", "\x{E3A}"));
+
+# 10
+
+ok($objTh->eq("\x{E4E}", ""));
+ok($objTh->eq("\x{E4C}", ""));
+ok($objTh->eq("\x{E47}", ""));
+ok($objTh->eq("\x{E48}", ""));
+ok($objTh->eq("\x{E49}", ""));
+ok($objTh->eq("\x{E4A}", ""));
+
+# 16
+
+$objTh->change(level => 2);
+
+ok($objTh->lt("\x{E4E}", "\x{E4C}"));
+ok($objTh->lt("\x{E4C}", "\x{E47}"));
+ok($objTh->lt("\x{E47}", "\x{E48}"));
+ok($objTh->lt("\x{E48}", "\x{E49}"));
+ok($objTh->lt("\x{E49}", "\x{E4A}"));
+ok($objTh->lt("\x{E4A}", "\x{E4B}"));
+
+ok($objTh->eq("\x{E32}", "\x{E45}"));
+
+# 23
+
+$objTh->change(level => 3);
+
+ok($objTh->lt("\x{E32}", "\x{E45}"));
+
+ok($objTh->eq("\x{E33}", "\x{E4D}\x{E32}"));
+
+# 25
diff --git a/cpan/Unicode-Collate/t/loc_uk.t b/cpan/Unicode-Collate/t/loc_uk.t
index 13258bb5a4..cda53dfaad 100644
--- a/cpan/Unicode-Collate/t/loc_uk.t
+++ b/cpan/Unicode-Collate/t/loc_uk.t
@@ -12,7 +12,7 @@ BEGIN {
}
use Test;
-BEGIN { plan tests => 7 };
+BEGIN { plan tests => 208 };
use strict;
use warnings;
@@ -29,21 +29,197 @@ ok($objUk->getlocale, 'uk');
$objUk->change(level => 1);
-ok($objUk->lt("\x{433}", "\x{491}"));
-ok($objUk->gt("\x{434}", "\x{491}"));
-
-# 4
+ok($objUk->gt("\x{491}", "\x{433}"));
+ok($objUk->lt("\x{491}", "\x{434}"));
+ok($objUk->gt("\x{44C}", "\x{44F}"));
+ok($objUk->lt("\x{44C}", "\x{519}"));
+
+# 6
+
+ok($objUk->gt("\x{4E5}", "\x{438}")); # not suppressed
+ok($objUk->gt("\x{4E4}", "\x{418}")); # not suppressed
+ok($objUk->gt("\x{457}", "\x{456}")); # not suppressed
+ok($objUk->gt("\x{407}", "\x{406}")); # not suppressed
+ok($objUk->gt("\x{439}", "\x{438}")); # not suppressed
+ok($objUk->gt("\x{419}", "\x{418}")); # not suppressed
+
+# 12
+
+ok($objUk->eq("\x{4D1}", "\x{430}"));
+ok($objUk->eq("\x{4D0}", "\x{410}"));
+ok($objUk->eq("\x{4D3}", "\x{430}"));
+ok($objUk->eq("\x{4D2}", "\x{410}"));
+ok($objUk->eq("\x{4DB}", "\x{4D9}"));
+ok($objUk->eq("\x{4DA}", "\x{4D8}"));
+ok($objUk->eq("\x{453}", "\x{433}"));
+ok($objUk->eq("\x{403}", "\x{413}"));
+ok($objUk->eq("\x{450}", "\x{435}")); # not contraction
+ok($objUk->eq("\x{400}", "\x{415}")); # not contraction
+ok($objUk->eq("\x{451}", "\x{435}")); # not contraction
+ok($objUk->eq("\x{401}", "\x{415}")); # not contraction
+ok($objUk->eq("\x{4D7}", "\x{435}"));
+ok($objUk->eq("\x{4D6}", "\x{415}"));
+ok($objUk->eq("\x{4C2}", "\x{436}")); # not contraction
+ok($objUk->eq("\x{4C1}", "\x{416}")); # not contraction
+ok($objUk->eq("\x{4DD}", "\x{436}"));
+ok($objUk->eq("\x{4DC}", "\x{416}"));
+ok($objUk->eq("\x{4DF}", "\x{437}"));
+ok($objUk->eq("\x{4DE}", "\x{417}"));
+ok($objUk->eq("\x{45D}", "\x{438}")); # not contraction
+ok($objUk->eq("\x{40D}", "\x{418}")); # not contraction
+ok($objUk->eq("\x{4E3}", "\x{438}")); # not contraction
+ok($objUk->eq("\x{4E2}", "\x{418}")); # not contraction
+ok($objUk->eq("\x{4E7}", "\x{43E}"));
+ok($objUk->eq("\x{4E6}", "\x{41E}"));
+ok($objUk->eq("\x{4EB}", "\x{4E9}"));
+ok($objUk->eq("\x{4EA}", "\x{4E8}"));
+ok($objUk->eq("\x{45C}", "\x{43A}"));
+ok($objUk->eq("\x{40C}", "\x{41A}"));
+ok($objUk->eq("\x{4EF}", "\x{443}")); # not contraction
+ok($objUk->eq("\x{4EE}", "\x{423}")); # not contraction
+ok($objUk->eq("\x{45E}", "\x{443}"));
+ok($objUk->eq("\x{40E}", "\x{423}"));
+ok($objUk->eq("\x{4F1}", "\x{443}"));
+ok($objUk->eq("\x{4F0}", "\x{423}"));
+ok($objUk->eq("\x{4F3}", "\x{443}"));
+ok($objUk->eq("\x{4F2}", "\x{423}"));
+ok($objUk->eq("\x{4F5}", "\x{447}"));
+ok($objUk->eq("\x{4F4}", "\x{427}"));
+ok($objUk->eq("\x{4F9}", "\x{44B}"));
+ok($objUk->eq("\x{4F8}", "\x{42B}"));
+ok($objUk->eq("\x{4ED}", "\x{44D}"));
+ok($objUk->eq("\x{4EC}", "\x{42D}"));
+ok($objUk->eq("\x{477}", "\x{475}"));
+ok($objUk->eq("\x{476}", "\x{474}"));
+
+# 58
$objUk->change(level => 2);
ok($objUk->eq("\x{491}", "\x{490}"));
+ok($objUk->eq("\x{44C}", "\x{42C}"));
+
+# 60
+
+ok($objUk->gt("\x{4D1}", "\x{430}"));
+ok($objUk->gt("\x{4D0}", "\x{410}"));
+ok($objUk->gt("\x{4D3}", "\x{430}"));
+ok($objUk->gt("\x{4D2}", "\x{410}"));
+ok($objUk->gt("\x{4DB}", "\x{4D9}"));
+ok($objUk->gt("\x{4DA}", "\x{4D8}"));
+ok($objUk->gt("\x{453}", "\x{433}"));
+ok($objUk->gt("\x{403}", "\x{413}"));
+ok($objUk->gt("\x{450}", "\x{435}")); # not contraction
+ok($objUk->gt("\x{400}", "\x{415}")); # not contraction
+ok($objUk->gt("\x{451}", "\x{435}")); # not contraction
+ok($objUk->gt("\x{401}", "\x{415}")); # not contraction
+ok($objUk->gt("\x{4D7}", "\x{435}"));
+ok($objUk->gt("\x{4D6}", "\x{415}"));
+ok($objUk->gt("\x{4C2}", "\x{436}")); # not contraction
+ok($objUk->gt("\x{4C1}", "\x{416}")); # not contraction
+ok($objUk->gt("\x{4DD}", "\x{436}"));
+ok($objUk->gt("\x{4DC}", "\x{416}"));
+ok($objUk->gt("\x{4DF}", "\x{437}"));
+ok($objUk->gt("\x{4DE}", "\x{417}"));
+ok($objUk->gt("\x{45D}", "\x{438}")); # not contraction
+ok($objUk->gt("\x{40D}", "\x{418}")); # not contraction
+ok($objUk->gt("\x{4E3}", "\x{438}")); # not contraction
+ok($objUk->gt("\x{4E2}", "\x{418}")); # not contraction
+ok($objUk->gt("\x{4E7}", "\x{43E}"));
+ok($objUk->gt("\x{4E6}", "\x{41E}"));
+ok($objUk->gt("\x{4EB}", "\x{4E9}"));
+ok($objUk->gt("\x{4EA}", "\x{4E8}"));
+ok($objUk->gt("\x{45C}", "\x{43A}"));
+ok($objUk->gt("\x{40C}", "\x{41A}"));
+ok($objUk->gt("\x{4EF}", "\x{443}")); # not contraction
+ok($objUk->gt("\x{4EE}", "\x{423}")); # not contraction
+ok($objUk->gt("\x{45E}", "\x{443}"));
+ok($objUk->gt("\x{40E}", "\x{423}"));
+ok($objUk->gt("\x{4F1}", "\x{443}"));
+ok($objUk->gt("\x{4F0}", "\x{423}"));
+ok($objUk->gt("\x{4F3}", "\x{443}"));
+ok($objUk->gt("\x{4F2}", "\x{423}"));
+ok($objUk->gt("\x{4F5}", "\x{447}"));
+ok($objUk->gt("\x{4F4}", "\x{427}"));
+ok($objUk->gt("\x{4F9}", "\x{44B}"));
+ok($objUk->gt("\x{4F8}", "\x{42B}"));
+ok($objUk->gt("\x{4ED}", "\x{44D}"));
+ok($objUk->gt("\x{4EC}", "\x{42D}"));
+ok($objUk->gt("\x{477}", "\x{475}"));
+ok($objUk->gt("\x{476}", "\x{474}"));
+
+# 106
$objUk->change(level => 3);
ok($objUk->lt("\x{491}", "\x{490}"));
+ok($objUk->lt("\x{44C}", "\x{42C}"));
+
+# 108
+
+ok($objUk->eq("\x{4E5}", "\x{438}\x{308}")); # not suppressed
+ok($objUk->eq("\x{4E4}", "\x{418}\x{308}")); # not suppressed
+ok($objUk->eq("\x{457}", "\x{456}\x{308}")); # not suppressed
+ok($objUk->eq("\x{407}", "\x{406}\x{308}")); # not suppressed
+ok($objUk->eq("\x{439}", "\x{438}\x{306}")); # not suppressed
+ok($objUk->eq("\x{419}", "\x{418}\x{306}")); # not suppressed
+
+# 114
+
+for my $i ("", "\0") {
+ ok($objUk->eq("\x{4D1}", "\x{430}$i\x{306}"));
+ ok($objUk->eq("\x{4D0}", "\x{410}$i\x{306}"));
+ ok($objUk->eq("\x{4D3}", "\x{430}$i\x{308}"));
+ ok($objUk->eq("\x{4D2}", "\x{410}$i\x{308}"));
+ ok($objUk->eq("\x{4DB}", "\x{4D9}$i\x{308}"));
+ ok($objUk->eq("\x{4DA}", "\x{4D8}$i\x{308}"));
+ ok($objUk->eq("\x{453}", "\x{433}$i\x{301}"));
+ ok($objUk->eq("\x{403}", "\x{413}$i\x{301}"));
+ ok($objUk->eq("\x{450}", "\x{435}$i\x{300}")); # not contraction
+ ok($objUk->eq("\x{400}", "\x{415}$i\x{300}")); # not contraction
+ ok($objUk->eq("\x{451}", "\x{435}$i\x{308}")); # not contraction
+ ok($objUk->eq("\x{401}", "\x{415}$i\x{308}")); # not contraction
+ ok($objUk->eq("\x{4D7}", "\x{435}$i\x{306}"));
+ ok($objUk->eq("\x{4D6}", "\x{415}$i\x{306}"));
+ ok($objUk->eq("\x{4C2}", "\x{436}$i\x{306}")); # not contraction
+ ok($objUk->eq("\x{4C1}", "\x{416}$i\x{306}")); # not contraction
+ ok($objUk->eq("\x{4DD}", "\x{436}$i\x{308}"));
+ ok($objUk->eq("\x{4DC}", "\x{416}$i\x{308}"));
+ ok($objUk->eq("\x{4DF}", "\x{437}$i\x{308}"));
+ ok($objUk->eq("\x{4DE}", "\x{417}$i\x{308}"));
+ ok($objUk->eq("\x{45D}", "\x{438}$i\x{300}")); # not contraction
+ ok($objUk->eq("\x{40D}", "\x{418}$i\x{300}")); # not contraction
+ ok($objUk->eq("\x{4E3}", "\x{438}$i\x{304}")); # not contraction
+ ok($objUk->eq("\x{4E2}", "\x{418}$i\x{304}")); # not contraction
+ ok($objUk->eq("\x{4E7}", "\x{43E}$i\x{308}"));
+ ok($objUk->eq("\x{4E6}", "\x{41E}$i\x{308}"));
+ ok($objUk->eq("\x{4EB}", "\x{4E9}$i\x{308}"));
+ ok($objUk->eq("\x{4EA}", "\x{4E8}$i\x{308}"));
+ ok($objUk->eq("\x{45C}", "\x{43A}$i\x{301}"));
+ ok($objUk->eq("\x{40C}", "\x{41A}$i\x{301}"));
+ ok($objUk->eq("\x{4EF}", "\x{443}$i\x{304}")); # not contraction
+ ok($objUk->eq("\x{4EE}", "\x{423}$i\x{304}")); # not contraction
+ ok($objUk->eq("\x{45E}", "\x{443}$i\x{306}"));
+ ok($objUk->eq("\x{40E}", "\x{423}$i\x{306}"));
+ ok($objUk->eq("\x{4F1}", "\x{443}$i\x{308}"));
+ ok($objUk->eq("\x{4F0}", "\x{423}$i\x{308}"));
+ ok($objUk->eq("\x{4F3}", "\x{443}$i\x{30B}"));
+ ok($objUk->eq("\x{4F2}", "\x{423}$i\x{30B}"));
+ ok($objUk->eq("\x{4F5}", "\x{447}$i\x{308}"));
+ ok($objUk->eq("\x{4F4}", "\x{427}$i\x{308}"));
+ ok($objUk->eq("\x{4F9}", "\x{44B}$i\x{308}"));
+ ok($objUk->eq("\x{4F8}", "\x{42B}$i\x{308}"));
+ ok($objUk->eq("\x{4ED}", "\x{44D}$i\x{308}"));
+ ok($objUk->eq("\x{4EC}", "\x{42D}$i\x{308}"));
+ ok($objUk->eq("\x{477}", "\x{475}$i\x{30F}"));
+ ok($objUk->eq("\x{476}", "\x{474}$i\x{30F}"));
+}
+
+# 206
$objUk->change(upper_before_lower => 1);
ok($objUk->gt("\x{491}", "\x{490}"));
+ok($objUk->gt("\x{44C}", "\x{42C}"));
-# 7
+# 208
diff --git a/cpan/Unicode-Collate/t/loc_ur.t b/cpan/Unicode-Collate/t/loc_ur.t
new file mode 100644
index 0000000000..4e173fec01
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_ur.t
@@ -0,0 +1,136 @@
+
+BEGIN {
+ unless ("A" eq pack('U', 0x41)) {
+ print "1..0 # Unicode::Collate " .
+ "cannot stringify a Unicode code point\n";
+ exit 0;
+ }
+ if ($ENV{PERL_CORE}) {
+ chdir('t') if -d 't';
+ @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+ }
+}
+
+use Test;
+BEGIN { plan tests => 91 };
+
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+ok(1);
+
+#########################
+
+my $objUr = Unicode::Collate::Locale->
+ new(locale => 'UR', normalization => undef);
+
+ok($objUr->getlocale, 'ur');
+
+$objUr->change(level => 1);
+
+ok($objUr->lt("\x{627}", "\x{622}"));
+ok($objUr->lt("\x{622}", "\x{628}"));
+ok($objUr->lt("\x{628}", "\x{628}\x{6BE}"));
+ok($objUr->lt("\x{628}\x{6BE}", "\x{67E}"));
+ok($objUr->lt("\x{67E}", "\x{67E}\x{6BE}"));
+ok($objUr->lt("\x{67E}\x{6BE}", "\x{62A}"));
+ok($objUr->lt("\x{62A}", "\x{62A}\x{6BE}"));
+ok($objUr->lt("\x{62A}\x{6BE}", "\x{679}"));
+ok($objUr->lt("\x{679}", "\x{679}\x{6BE}"));
+ok($objUr->lt("\x{679}\x{6BE}", "\x{62B}"));
+ok($objUr->lt("\x{62B}", "\x{62C}"));
+ok($objUr->lt("\x{62C}", "\x{62C}\x{6BE}"));
+ok($objUr->lt("\x{62C}\x{6BE}", "\x{686}"));
+ok($objUr->lt("\x{686}", "\x{686}\x{6BE}"));
+ok($objUr->lt("\x{686}\x{6BE}", "\x{62D}"));
+ok($objUr->lt("\x{62D}", "\x{62E}"));
+ok($objUr->lt("\x{62E}", "\x{62F}"));
+ok($objUr->lt("\x{62F}", "\x{62F}\x{6BE}"));
+ok($objUr->lt("\x{62F}\x{6BE}", "\x{688}"));
+ok($objUr->lt("\x{688}", "\x{688}\x{6BE}"));
+ok($objUr->lt("\x{688}\x{6BE}", "\x{630}"));
+ok($objUr->lt("\x{630}", "\x{631}"));
+ok($objUr->lt("\x{631}", "\x{631}\x{6BE}"));
+ok($objUr->lt("\x{631}\x{6BE}", "\x{691}"));
+ok($objUr->lt("\x{691}", "\x{691}\x{6BE}"));
+ok($objUr->lt("\x{691}\x{6BE}", "\x{632}"));
+ok($objUr->lt("\x{632}", "\x{698}"));
+ok($objUr->lt("\x{698}", "\x{633}"));
+ok($objUr->lt("\x{633}", "\x{634}"));
+ok($objUr->lt("\x{634}", "\x{635}"));
+ok($objUr->lt("\x{635}", "\x{636}"));
+ok($objUr->lt("\x{636}", "\x{637}"));
+ok($objUr->lt("\x{637}", "\x{638}"));
+ok($objUr->lt("\x{638}", "\x{639}"));
+ok($objUr->lt("\x{639}", "\x{63A}"));
+ok($objUr->lt("\x{63A}", "\x{641}"));
+ok($objUr->lt("\x{641}", "\x{642}"));
+ok($objUr->lt("\x{642}", "\x{6A9}"));
+ok($objUr->lt("\x{6A9}", "\x{6A9}\x{6BE}"));
+ok($objUr->lt("\x{6A9}\x{6BE}", "\x{6AF}"));
+ok($objUr->lt("\x{6AF}", "\x{6AF}\x{6BE}"));
+ok($objUr->lt("\x{6AF}\x{6BE}", "\x{644}"));
+ok($objUr->lt("\x{644}", "\x{644}\x{6BE}"));
+ok($objUr->lt("\x{644}\x{6BE}", "\x{645}"));
+ok($objUr->lt("\x{645}", "\x{645}\x{6BE}"));
+ok($objUr->lt("\x{645}\x{6BE}", "\x{646}"));
+ok($objUr->lt("\x{646}", "\x{646}\x{6BE}"));
+ok($objUr->lt("\x{646}\x{6BE}", "\x{6BA}"));
+ok($objUr->lt("\x{6BA}", "\x{6BA}\x{6BE}"));
+ok($objUr->lt("\x{6BA}\x{6BE}", "\x{648}"));
+ok($objUr->lt("\x{648}", "\x{648}\x{6BE}"));
+ok($objUr->lt("\x{648}\x{6BE}", "\x{6C1}"));
+ok($objUr->lt("\x{6C1}", "\x{6BE}"));
+ok($objUr->lt("\x{6BE}", "\x{6C3}"));
+ok($objUr->lt("\x{6C3}", "\x{621}"));
+ok($objUr->lt("\x{621}", "\x{6CC}"));
+ok($objUr->lt("\x{6CC}", "\x{6CC}\x{6BE}"));
+ok($objUr->lt("\x{6CC}\x{6BE}", "\x{6D2}"));
+ok($objUr->lt("\x{6D2}", "\x{67B}"));
+
+# 61
+
+ok($objUr->eq("\x{627}", "\x{623}"));
+ok($objUr->eq("\x{648}", "\x{624}"));
+ok($objUr->eq("\x{6C1}", "\x{6C2}"));
+ok($objUr->eq("\x{6CC}", "\x{626}"));
+ok($objUr->eq("\x{6D2}", "\x{6D3}"));
+
+# 66
+
+$objUr->change(level => 2);
+
+ok($objUr->lt("\x{627}", "\x{623}"));
+ok($objUr->lt("\x{648}", "\x{624}"));
+ok($objUr->lt("\x{6C1}", "\x{6C2}"));
+ok($objUr->lt("\x{6CC}", "\x{626}"));
+ok($objUr->lt("\x{6D2}", "\x{6D3}"));
+
+# 71
+
+ok($objUr->lt("\x{652}", "\x{64E}"));
+ok($objUr->lt("\x{64E}", "\x{650}"));
+ok($objUr->lt("\x{650}", "\x{64F}"));
+ok($objUr->lt("\x{64F}", "\x{670}"));
+ok($objUr->lt("\x{670}", "\x{656}"));
+ok($objUr->lt("\x{656}", "\x{657}"));
+ok($objUr->lt("\x{657}", "\x{64B}"));
+ok($objUr->lt("\x{64B}", "\x{64D}"));
+ok($objUr->lt("\x{64D}", "\x{64C}"));
+ok($objUr->lt("\x{64C}", "\x{654}"));
+ok($objUr->lt("\x{654}", "\x{651}"));
+ok($objUr->lt("\x{651}", "\x{658}"));
+ok($objUr->lt("\x{658}", "\x{653}"));
+ok($objUr->lt("\x{653}", "\x{655}"));
+
+# 85
+
+ok($objUr->eq("\x{623}", "\x{627}\x{654}"));
+ok($objUr->eq("\x{622}", "\x{627}\x{653}"));
+ok($objUr->eq("\x{624}", "\x{648}\x{654}"));
+ok($objUr->eq("\x{6C2}", "\x{6C1}\x{654}"));
+ok($objUr->eq("\x{626}", "\x{64A}\x{654}"));
+ok($objUr->eq("\x{6D3}", "\x{6D2}\x{654}"));
+
+# 91
diff --git a/cpan/Unicode-Collate/t/loc_wae.t b/cpan/Unicode-Collate/t/loc_wae.t
new file mode 100644
index 0000000000..aaaa6eee37
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_wae.t
@@ -0,0 +1,138 @@
+
+BEGIN {
+ unless ("A" eq pack('U', 0x41)) {
+ print "1..0 # Unicode::Collate " .
+ "cannot stringify a Unicode code point\n";
+ exit 0;
+ }
+ if ($ENV{PERL_CORE}) {
+ chdir('t') if -d 't';
+ @INC = $^O eq 'MacOS' ? qw(::lib) : qw(../lib);
+ }
+}
+
+use Test;
+BEGIN { plan tests => 78 };
+
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+ok(1);
+
+#########################
+
+my $objWae = Unicode::Collate::Locale->
+ new(locale => 'WAE', normalization => undef);
+
+ok($objWae->getlocale, 'wae');
+
+$objWae->change(level => 1);
+
+ok($objWae->lt("aa", "a9"));
+ok($objWae->gt("aA", "a9"));
+ok($objWae->gt("Aa", "a9"));
+ok($objWae->gt("AA", "a9"));
+ok($objWae->lt("ee", "e9"));
+ok($objWae->gt("eE", "e9"));
+ok($objWae->gt("Ee", "e9"));
+ok($objWae->gt("EE", "e9"));
+ok($objWae->lt("ii", "i9"));
+ok($objWae->gt("iI", "i9"));
+ok($objWae->gt("Ii", "i9"));
+ok($objWae->gt("II", "i9"));
+ok($objWae->lt("oo", "o9"));
+ok($objWae->gt("oO", "o9"));
+ok($objWae->gt("Oo", "o9"));
+ok($objWae->gt("OO", "o9"));
+ok($objWae->lt("uu", "u9"));
+ok($objWae->gt("uU", "u9"));
+ok($objWae->gt("Uu", "u9"));
+ok($objWae->gt("UU", "u9"));
+
+# 22
+
+ok($objWae->lt("ch", "c9"));
+ok($objWae->gt("cH", "c9"));
+ok($objWae->gt("Ch", "c9"));
+ok($objWae->gt("CH", "c9"));
+
+ok($objWae->lt("sch", "s9"));
+ok($objWae->gt("scH", "s9"));
+ok($objWae->gt("sCh", "s9"));
+ok($objWae->gt("sCH", "s9"));
+ok($objWae->gt("Sch", "s9"));
+ok($objWae->gt("ScH", "s9"));
+ok($objWae->gt("SCh", "s9"));
+ok($objWae->gt("SCH", "s9"));
+
+# 34
+
+ok($objWae->lt("a\x{308}a\x{308}", "a9"));
+ok($objWae->gt("a\x{308}A\x{308}", "a9"));
+ok($objWae->gt("A\x{308}a\x{308}", "a9"));
+ok($objWae->gt("A\x{308}A\x{308}", "a9"));
+ok($objWae->lt("o\x{308}o\x{308}", "o9"));
+ok($objWae->gt("o\x{308}O\x{308}", "o9"));
+ok($objWae->gt("O\x{308}o\x{308}", "o9"));
+ok($objWae->gt("O\x{308}O\x{308}", "o9"));
+ok($objWae->lt("u\x{308}u\x{308}", "u9"));
+ok($objWae->gt("u\x{308}U\x{308}", "u9"));
+ok($objWae->gt("U\x{308}u\x{308}", "u9"));
+ok($objWae->gt("U\x{308}U\x{308}", "u9"));
+
+# 46
+
+$objWae->change(level => 3);
+
+ok($objWae->eq("a\x{301}", pack('U', 0xE1)));
+ok($objWae->eq("e\x{301}", pack('U', 0xE9)));
+ok($objWae->eq("i\x{301}", pack('U', 0xED)));
+ok($objWae->eq("o\x{301}", pack('U', 0xF3)));
+ok($objWae->eq("u\x{301}", pack('U', 0xFA)));
+ok($objWae->eq("a\x{301}", "aa"));
+ok($objWae->eq("e\x{301}", "ee"));
+ok($objWae->eq("i\x{301}", "ii"));
+ok($objWae->eq("o\x{301}", "oo"));
+ok($objWae->eq("u\x{301}", "uu"));
+
+# 56
+
+ok($objWae->eq("c\x{30C}", "\x{10D}"));
+ok($objWae->eq("s\x{30C}", "\x{161}"));
+ok($objWae->eq("c\x{30C}", "ch"));
+ok($objWae->eq("s\x{30C}", "sch"));
+
+# 60
+
+my $a1 = pack('U', 0xE4);
+my $o1 = pack('U', 0xF6);
+my $u1 = pack('U', 0xFC);
+my $a2 = "a\x{308}";
+my $o2 = "o\x{308}";
+my $u2 = "u\x{308}";
+
+ok($objWae->eq($a1, $a2));
+ok($objWae->eq($o1, $o2));
+ok($objWae->eq($u1, $u2));
+
+ok($objWae->eq("a\x{303}", pack('U', 0xE3)));
+ok($objWae->eq("o\x{303}", pack('U', 0xF5)));
+ok($objWae->eq("u\x{303}", "\x{169}"));
+
+# 66
+
+ok($objWae->eq("a\x{303}", $a1.$a1));
+ok($objWae->eq("a\x{303}", $a1.$a2));
+ok($objWae->eq("a\x{303}", $a2.$a1));
+ok($objWae->eq("a\x{303}", $a2.$a2));
+ok($objWae->eq("o\x{303}", $o1.$o1));
+ok($objWae->eq("o\x{303}", $o1.$o2));
+ok($objWae->eq("o\x{303}", $o2.$o1));
+ok($objWae->eq("o\x{303}", $o2.$o2));
+ok($objWae->eq("u\x{303}", $u1.$u1));
+ok($objWae->eq("u\x{303}", $u1.$u2));
+ok($objWae->eq("u\x{303}", $u2.$u1));
+ok($objWae->eq("u\x{303}", $u2.$u2));
+
+# 78