summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--MANIFEST16
-rwxr-xr-xPorting/Maintainers.pl2
-rw-r--r--cpan/Unicode-Collate/Changes5
-rw-r--r--cpan/Unicode-Collate/Collate.pm2
-rw-r--r--cpan/Unicode-Collate/Collate/Locale.pm33
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/af.pl5
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/cy.pl28
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/da.pl63
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/fo.pl62
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/haw.pl35
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/is.pl62
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/kl.pl60
-rw-r--r--cpan/Unicode-Collate/Collate/Locale/sw.pl28
-rw-r--r--cpan/Unicode-Collate/README2
-rw-r--r--cpan/Unicode-Collate/t/loc_af.t28
-rw-r--r--cpan/Unicode-Collate/t/loc_cy.t105
-rw-r--r--cpan/Unicode-Collate/t/loc_da.t157
-rw-r--r--cpan/Unicode-Collate/t/loc_fo.t148
-rw-r--r--cpan/Unicode-Collate/t/loc_haw.t78
-rw-r--r--cpan/Unicode-Collate/t/loc_is.t153
-rw-r--r--cpan/Unicode-Collate/t/loc_kl.t144
-rw-r--r--cpan/Unicode-Collate/t/loc_nb.t6
-rw-r--r--cpan/Unicode-Collate/t/loc_nn.t6
-rw-r--r--cpan/Unicode-Collate/t/loc_sv.t6
-rw-r--r--cpan/Unicode-Collate/t/loc_sw.t103
25 files changed, 1314 insertions, 23 deletions
diff --git a/MANIFEST b/MANIFEST
index 3ab86a5d73..aaa5b20a2b 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -2480,14 +2480,21 @@ cpan/Time-Piece/t/07arith.t Test for Time::Piece
cpan/Unicode-Collate/Changes Unicode::Collate
cpan/Unicode-Collate/Collate/allkeys.txt Unicode::Collate
cpan/Unicode-Collate/Collate/keys.txt Unicode::Collate
+cpan/Unicode-Collate/Collate/Locale/af.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/ca.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/cs.pl Unicode::Collate
+cpan/Unicode-Collate/Collate/Locale/cy.pl Unicode::Collate
+cpan/Unicode-Collate/Collate/Locale/da.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/eo.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/es.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/es_trad.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/et.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/fi.pl Unicode::Collate
+cpan/Unicode-Collate/Collate/Locale/fo.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/fr.pl Unicode::Collate
+cpan/Unicode-Collate/Collate/Locale/haw.pl Unicode::Collate
+cpan/Unicode-Collate/Collate/Locale/is.pl Unicode::Collate
+cpan/Unicode-Collate/Collate/Locale/kl.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/lv.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/nn.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/pl.pl Unicode::Collate
@@ -2496,6 +2503,7 @@ cpan/Unicode-Collate/Collate/Locale/ro.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/sk.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/sl.pl Unicode::Collate
cpan/Unicode-Collate/Collate/Locale/sv.pl Unicode::Collate
+cpan/Unicode-Collate/Collate/Locale/sw.pl Unicode::Collate
cpan/Unicode-Collate/Collate.pm Unicode::Collate
cpan/Unicode-Collate/README Unicode::Collate
cpan/Unicode-Collate/t/altern.t Unicode::Collate
@@ -2508,14 +2516,21 @@ cpan/Unicode-Collate/t/ignor.t Unicode::Collate
cpan/Unicode-Collate/t/illegalp.t Unicode::Collate
cpan/Unicode-Collate/t/illegal.t Unicode::Collate
cpan/Unicode-Collate/t/index.t Unicode::Collate
+cpan/Unicode-Collate/t/loc_af.t Unicode::Collate
cpan/Unicode-Collate/t/loc_ca.t Unicode::Collate
cpan/Unicode-Collate/t/loc_cs.t Unicode::Collate
+cpan/Unicode-Collate/t/loc_cy.t Unicode::Collate
+cpan/Unicode-Collate/t/loc_da.t Unicode::Collate
cpan/Unicode-Collate/t/loc_eo.t Unicode::Collate
cpan/Unicode-Collate/t/loc_es.t Unicode::Collate
cpan/Unicode-Collate/t/loc_estr.t Unicode::Collate
cpan/Unicode-Collate/t/loc_et.t Unicode::Collate
cpan/Unicode-Collate/t/loc_fi.t Unicode::Collate
+cpan/Unicode-Collate/t/loc_fo.t Unicode::Collate
cpan/Unicode-Collate/t/loc_fr.t Unicode::Collate
+cpan/Unicode-Collate/t/loc_haw.t Unicode::Collate
+cpan/Unicode-Collate/t/loc_is.t Unicode::Collate
+cpan/Unicode-Collate/t/loc_kl.t Unicode::Collate
cpan/Unicode-Collate/t/loc_lv.t Unicode::Collate
cpan/Unicode-Collate/t/loc_nb.t Unicode::Collate
cpan/Unicode-Collate/t/loc_nn.t Unicode::Collate
@@ -2524,6 +2539,7 @@ cpan/Unicode-Collate/t/loc_ro.t Unicode::Collate
cpan/Unicode-Collate/t/loc_sk.t Unicode::Collate
cpan/Unicode-Collate/t/loc_sl.t Unicode::Collate
cpan/Unicode-Collate/t/loc_sv.t Unicode::Collate
+cpan/Unicode-Collate/t/loc_sw.t Unicode::Collate
cpan/Unicode-Collate/t/loc_test.t Unicode::Collate
cpan/Unicode-Collate/t/normal.t Unicode::Collate
cpan/Unicode-Collate/t/override.t Unicode::Collate
diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl
index 145fe804f8..fff5210a3a 100755
--- a/Porting/Maintainers.pl
+++ b/Porting/Maintainers.pl
@@ -1506,7 +1506,7 @@ use File::Glob qw(:case);
'Unicode::Collate' =>
{
'MAINTAINER' => 'sadahiro',
- 'DISTRIBUTION' => 'SADAHIRO/Unicode-Collate-0.57-withoutworldwriteables.tar.gz',
+ 'DISTRIBUTION' => 'SADAHIRO/Unicode-Collate-0.58-withoutworldwriteables.tar.gz',
'FILES' => q[cpan/Unicode-Collate],
# ignore experimental XS version
'EXCLUDED' => [ qr{X$},
diff --git a/cpan/Unicode-Collate/Changes b/cpan/Unicode-Collate/Changes
index 62fa837977..e044d43087 100644
--- a/cpan/Unicode-Collate/Changes
+++ b/cpan/Unicode-Collate/Changes
@@ -1,7 +1,10 @@
Revision history for Perl module Unicode::Collate.
+0.58 Sun Aug 29 19:56:50 2010
+ - U::C::Locale newly supports locales: af, cy, da, fo, haw, is, kl, sw.
+
0.57 Sun Aug 22 22:39:58 2010
- - Unicode::Collate::Locale newly supports locales: ca, et, fi, lv, sk, sl.
+ - U::C::Locale newly supports locales: ca, et, fi, lv, sk, sl.
0.56 Sun Aug 8 20:24:03 2010
- Unicode::Collate::Locale newly supports locales: eo, nb, ro, sv.
diff --git a/cpan/Unicode-Collate/Collate.pm b/cpan/Unicode-Collate/Collate.pm
index a1da1c9568..1467c33c12 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.57';
+our $VERSION = '0.58';
our $PACKAGE = __PACKAGE__;
my @Path = qw(Unicode Collate);
diff --git a/cpan/Unicode-Collate/Collate/Locale.pm b/cpan/Unicode-Collate/Collate/Locale.pm
index 204b8c3b17..4aeef1f582 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.57';
+our $VERSION = '0.58';
use File::Spec;
@@ -13,7 +13,7 @@ my $KeyPath = File::Spec->catfile('allkeys.txt');
my $PL_EXT = '.pl';
my %LocaleFile = map { ($_, $_) } qw(
- ca cs eo es et fi fr lv nn pl ro sk sl sv
+ af ca cs cy da eo es et fi fo fr haw is kl lv nn pl ro sk sl sv sw
);
$LocaleFile{'default'} = '';
$LocaleFile{'es__traditional'} = 'es_trad';
@@ -39,23 +39,28 @@ sub getlocale {
return shift->{accepted_locale};
}
+sub _fetch_locale {
+ my $accepted = shift;
+ my $f = $LocaleFile{$accepted};
+ return if !$f;
+ $f .= $PL_EXT;
+ my $path = File::Spec->catfile($ModPath, $f);
+ my $h = do $path;
+ croak "Unicode/Collate/Locale/$f can't be found" if !$h;
+ return $h;
+}
+
sub new {
my $class = shift;
my %hash = @_;
- my ($href,$file);
$hash{accepted_locale} = _locale($hash{locale});
- $file = $LocaleFile{ $hash{accepted_locale} };
- if ($file) {
- my $filepath = File::Spec->catfile($ModPath, $file.$PL_EXT);
- $href = do $filepath;
- }
-
if (exists $hash{table}) {
croak "your table can't be used with Unicode::Collate::Locale";
}
- $href->{table} = $KeyPath;
+ $hash{table} = $KeyPath;
+ my $href = _fetch_locale($hash{accepted_locale});
while (my($k,$v) = each %$href) {
if (exists $hash{$k}) {
croak "$k is reserved by $hash{locale}, can't be overwritten";
@@ -147,14 +152,21 @@ this method returns a string C<'default'> meaning no special tailoring.
locale name description
----------------------------------------------------------
+ af Afrikaans
ca Catalan
cs Czech
+ cy Welsh
+ da Danish
eo Esperanto
es Spanish
es__traditional Spanish ('ch' and 'll' as a grapheme)
et Estonian
fi Finnish
+ fo Faroese
fr French
+ haw Hawaiian
+ is Icelandic
+ kl Kalaallisut
lv Latvian
nb Norwegian Bokmal
nn Norwegian Nynorsk
@@ -163,6 +175,7 @@ this method returns a string C<'default'> meaning no special tailoring.
sk Slovak
sl Slovenian
sv Swedish
+ sw Swahili
=head1 AUTHOR
diff --git a/cpan/Unicode-Collate/Collate/Locale/af.pl b/cpan/Unicode-Collate/Collate/Locale/af.pl
new file mode 100644
index 0000000000..4e667e967c
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/af.pl
@@ -0,0 +1,5 @@
++{
+ entry => <<'ENTRY', # for DUCET v5.2.0
+0149 ; [.136D.0020.0009.0149] # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/cy.pl b/cpan/Unicode-Collate/Collate/Locale/cy.pl
new file mode 100644
index 0000000000..8bf5061629
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/cy.pl
@@ -0,0 +1,28 @@
++{
+ entry => <<'ENTRY', # for DUCET v5.2.0
+0063 0068 ; [.123E.0020.0002.0063] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
+0043 0068 ; [.123E.0020.0007.0043] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER H>
+0043 0048 ; [.123E.0020.0008.0043] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER H>
+0064 0064 ; [.1251.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER D>
+0044 0064 ; [.1251.0020.0007.0044] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER D>
+0044 0044 ; [.1251.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER D>
+0066 0066 ; [.12A4.0020.0002.0066] # <LATIN SMALL LETTER F, LATIN SMALL LETTER F>
+0046 0066 ; [.12A4.0020.0007.0046] # <LATIN CAPITAL LETTER F, LATIN SMALL LETTER F>
+0046 0046 ; [.12A4.0020.0008.0046] # <LATIN CAPITAL LETTER F, LATIN CAPITAL LETTER F>
+006E 0067 ; [.12B1.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER G>
+004E 0067 ; [.12B1.0020.0007.004E] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER G>
+004E 0047 ; [.12B1.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER G>
+006C 006C ; [.1331.0020.0002.006C] # <LATIN SMALL LETTER L, LATIN SMALL LETTER L>
+004C 006C ; [.1331.0020.0007.004C] # <LATIN CAPITAL LETTER L, LATIN SMALL LETTER L>
+004C 004C ; [.1331.0020.0008.004C] # <LATIN CAPITAL LETTER L, LATIN CAPITAL LETTER L>
+0070 0068 ; [.13B4.0020.0002.0070] # <LATIN SMALL LETTER P, LATIN SMALL LETTER H>
+0050 0068 ; [.13B4.0020.0007.0050] # <LATIN CAPITAL LETTER P, LATIN SMALL LETTER H>
+0050 0048 ; [.13B4.0020.0008.0050] # <LATIN CAPITAL LETTER P, LATIN CAPITAL LETTER H>
+0072 0068 ; [.13DB.0020.0002.0072] # <LATIN SMALL LETTER R, LATIN SMALL LETTER H>
+0052 0068 ; [.13DB.0020.0007.0052] # <LATIN CAPITAL LETTER R, LATIN SMALL LETTER H>
+0052 0048 ; [.13DB.0020.0008.0052] # <LATIN CAPITAL LETTER R, LATIN CAPITAL LETTER H>
+0074 0068 ; [.1434.0020.0002.0074] # <LATIN SMALL LETTER T, LATIN SMALL LETTER H>
+0054 0068 ; [.1434.0020.0007.0054] # <LATIN CAPITAL LETTER T, LATIN SMALL LETTER H>
+0054 0048 ; [.1434.0020.0008.0054] # <LATIN CAPITAL LETTER T, LATIN CAPITAL LETTER H>
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/da.pl b/cpan/Unicode-Collate/Collate/Locale/da.pl
new file mode 100644
index 0000000000..e680df11b9
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/da.pl
@@ -0,0 +1,63 @@
++{
+ upper_before_lower => 1,
+ entry => <<'ENTRY', # for DUCET v5.2.0
+0111 ; [.1250.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0064 0335 ; [.1250.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0110 ; [.1250.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+0044 0335 ; [.1250.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+00F0 ; [.1250.0022.0002.00F0] # LATIN SMALL LETTER ETH
+00D0 ; [.1250.0022.0008.00D0] # LATIN CAPITAL LETTER ETH
+00FE ; [.1433.0020.0003.00FE][.12D3.0020.0003.00FE] # LATIN SMALL LETTER THORN
+00DE ; [.1433.0020.0009.00DE][.12D3.0020.0009.00DE] # LATIN CAPITAL LETTER THORN
+00FC ; [.149C.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.149C.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.149C.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.149C.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0171 ; [.149C.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0075 030B ; [.149C.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0170 ; [.149C.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0055 030B ; [.149C.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+00E6 ; [.14AE.0020.0002.00E6] # LATIN SMALL LETTER AE
+00C6 ; [.14AE.0020.0008.00C6] # LATIN CAPITAL LETTER AE
+1D2D ; [.14AE.0020.0014.1D2D] # MODIFIER LETTER CAPITAL AE
+01FD ; [.14AE.0020.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
+01FC ; [.14AE.0020.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
+01E3 ; [.14AE.0020.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
+01E2 ; [.14AE.0020.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
+00E4 ; [.14AE.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+0061 0308 ; [.14AE.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+00C4 ; [.14AE.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0041 0308 ; [.14AE.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0119 ; [.14AE.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0065 0328 ; [.14AE.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0118 ; [.14AE.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+0045 0328 ; [.14AE.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+00F8 ; [.14AF.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+006F 0338 ; [.14AF.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+00D8 ; [.14AF.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+004F 0338 ; [.14AF.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+01FF ; [.14AF.0020.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+01FE ; [.14AF.0020.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+00F6 ; [.14AF.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.14AF.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6 ; [.14AF.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.14AF.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+0151 ; [.14AF.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+006F 030B ; [.14AF.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0150 ; [.14AF.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+004F 030B ; [.14AF.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0153 ; [.14AF.0023.0002.0153] # LATIN SMALL LIGATURE OE
+0152 ; [.14AF.0023.0008.0152] # LATIN CAPITAL LIGATURE OE
+00E5 ; [.14B0.0020.0002.00E5][.0.0.1.0] # LATIN SMALL LETTER A WITH RING ABOVE
+0061 030A ; [.14B0.0020.0002.00E5][.0.0.1.0] # LATIN SMALL LETTER A WITH RING ABOVE
+00C5 ; [.14B0.0020.0008.00C5][.0.0.1.0] # LATIN CAPITAL LETTER A WITH RING ABOVE
+0041 030A ; [.14B0.0020.0008.00C5][.0.0.1.0] # LATIN CAPITAL LETTER A WITH RING ABOVE
+212B ; [.14B0.0020.0008.00C5][.0.0.1.0] # ANGSTROM SIGN
+01FB ; [.14B0.0020.0002.00E5][.0000.0000.0001.0000][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FA ; [.14B0.0020.0008.00C5][.0000.0000.0001.0000][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+0061 0061 ; [.14B0.0020.0002.0061][.0.0.7.0] # <LATIN SMALL LETTER A, LATIN SMALL LETTER A>
+0041 0061 ; [.14B0.0020.0007.0041][.0.0.2.0] # <LATIN CAPITAL LETTER A, LATIN SMALL LETTER A>
+0061 0041 ; [.14B0.0020.0007.0061][.0.0.8.0] # <LATIN SMALL LETTER A, LATIN CAPITAL LETTER A>
+0041 0041 ; [.14B0.0020.0008.0041][.0.0.7.0] # <LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER A>
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/fo.pl b/cpan/Unicode-Collate/Collate/Locale/fo.pl
new file mode 100644
index 0000000000..48066f2b8c
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/fo.pl
@@ -0,0 +1,62 @@
++{
+ entry => <<'ENTRY', # for DUCET v5.2.0
+0111 ; [.1250.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0064 0335 ; [.1250.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0110 ; [.1250.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+0044 0335 ; [.1250.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+00F0 ; [.1250.0022.0002.00F0] # LATIN SMALL LETTER ETH
+00D0 ; [.1250.0022.0008.00D0] # LATIN CAPITAL LETTER ETH
+00FE ; [.1433.0020.0003.00FE][.12D3.0020.0003.00FE] # LATIN SMALL LETTER THORN
+00DE ; [.1433.0020.0009.00DE][.12D3.0020.0009.00DE] # LATIN CAPITAL LETTER THORN
+00FC ; [.149C.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.149C.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.149C.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.149C.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0171 ; [.149C.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0075 030B ; [.149C.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0170 ; [.149C.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0055 030B ; [.149C.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+00E6 ; [.14AE.0020.0002.00E6] # LATIN SMALL LETTER AE
+00C6 ; [.14AE.0020.0008.00C6] # LATIN CAPITAL LETTER AE
+1D2D ; [.14AE.0020.0014.1D2D] # MODIFIER LETTER CAPITAL AE
+01FD ; [.14AE.0020.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
+01FC ; [.14AE.0020.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
+01E3 ; [.14AE.0020.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
+01E2 ; [.14AE.0020.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
+00E4 ; [.14AE.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+0061 0308 ; [.14AE.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+00C4 ; [.14AE.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0041 0308 ; [.14AE.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0119 ; [.14AE.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0065 0328 ; [.14AE.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0118 ; [.14AE.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+0045 0328 ; [.14AE.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+00F8 ; [.14AF.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+006F 0338 ; [.14AF.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+00D8 ; [.14AF.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+004F 0338 ; [.14AF.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+01FF ; [.14AF.0020.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+01FE ; [.14AF.0020.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+00F6 ; [.14AF.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.14AF.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6 ; [.14AF.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.14AF.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+0151 ; [.14AF.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+006F 030B ; [.14AF.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0150 ; [.14AF.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+004F 030B ; [.14AF.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0153 ; [.14AF.0023.0002.0153] # LATIN SMALL LIGATURE OE
+0152 ; [.14AF.0023.0008.0152] # LATIN CAPITAL LIGATURE OE
+00E5 ; [.14B0.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+0061 030A ; [.14B0.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+00C5 ; [.14B0.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+0041 030A ; [.14B0.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+212B ; [.14B0.0020.0008.00C5] # ANGSTROM SIGN
+01FB ; [.14B0.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FA ; [.14B0.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+0061 0061 ; [.14B0.0020.001C.0061][.0.0.2.0] # <LATIN SMALL LETTER A, LATIN SMALL LETTER A>
+0061 0041 ; [.14B0.0020.001C.0061][.0.0.8.0] # <LATIN SMALL LETTER A, LATIN CAPITAL LETTER A>
+0041 0061 ; [.14B0.0020.001D.0041][.0.0.2.0] # <LATIN CAPITAL LETTER A, LATIN SMALL LETTER A>
+0041 0041 ; [.14B0.0020.001D.0041][.0.0.8.0] # <LATIN CAPITAL LETTER A, LATIN CAPITAL LETTER A>
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/haw.pl b/cpan/Unicode-Collate/Collate/Locale/haw.pl
new file mode 100644
index 0000000000..d55c6076f0
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/haw.pl
@@ -0,0 +1,35 @@
++{
+ entry => <<'ENTRY', # for DUCET v5.2.0
+0065 ; [.1210.0020.0002.0065] # LATIN SMALL LETTER E
+0045 ; [.1210.0020.0008.0045] # LATIN CAPITAL LETTER E
+0069 ; [.1211.0020.0002.0069] # LATIN SMALL LETTER I
+0049 ; [.1211.0020.0008.0049] # LATIN CAPITAL LETTER I
+006F ; [.1212.0020.0002.006F] # LATIN SMALL LETTER O
+004F ; [.1212.0020.0008.004F] # LATIN CAPITAL LETTER O
+0075 ; [.1213.0020.0002.0075] # LATIN SMALL LETTER U
+0055 ; [.1213.0020.0008.0055] # LATIN CAPITAL LETTER U
+0068 ; [.1214.0020.0002.0068] # LATIN SMALL LETTER H
+0048 ; [.1214.0020.0008.0048] # LATIN CAPITAL LETTER H
+006B ; [.1215.0020.0002.006B] # LATIN SMALL LETTER K
+004B ; [.1215.0020.0008.004B] # LATIN CAPITAL LETTER K
+006C ; [.1216.0020.0002.006C] # LATIN SMALL LETTER L
+004C ; [.1216.0020.0008.004C] # LATIN CAPITAL LETTER L
+006D ; [.1217.0020.0002.006D] # LATIN SMALL LETTER M
+004D ; [.1217.0020.0008.004D] # LATIN CAPITAL LETTER M
+006E ; [.1218.0020.0002.006E] # LATIN SMALL LETTER N
+004E ; [.1218.0020.0008.004E] # LATIN CAPITAL LETTER N
+0070 ; [.1219.0020.0002.0070] # LATIN SMALL LETTER P
+0050 ; [.1219.0020.0008.0050] # LATIN CAPITAL LETTER P
+0077 ; [.121A.0020.0002.0077] # LATIN SMALL LETTER W
+0057 ; [.121A.0020.0008.0057] # LATIN CAPITAL LETTER W
+02BB ; [.121B.0020.0002.02BB] # MODIFIER LETTER TURNED COMMA
+0113 ; [.1210.0020.0002.0065][.0000.005B.0002.0304] # LATIN SMALL LETTER E WITH MACRON
+0112 ; [.1210.0020.0008.0045][.0000.005B.0002.0304] # LATIN CAPITAL LETTER E WITH MACRON
+012B ; [.1211.0020.0002.0069][.0000.005B.0002.0304] # LATIN SMALL LETTER I WITH MACRON
+012A ; [.1211.0020.0008.0049][.0000.005B.0002.0304] # LATIN CAPITAL LETTER I WITH MACRON
+014D ; [.1212.0020.0002.006F][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH MACRON
+014C ; [.1212.0020.0008.004F][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH MACRON
+016B ; [.1213.0020.0002.0075][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH MACRON
+016A ; [.1213.0020.0008.0055][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH MACRON
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/is.pl b/cpan/Unicode-Collate/Collate/Locale/is.pl
new file mode 100644
index 0000000000..ec48689df5
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/is.pl
@@ -0,0 +1,62 @@
++{
+ entry => <<'ENTRY', # for DUCET v5.2.0
+00E1 ; [.1224.0020.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+0061 0301 ; [.1224.0020.0002.00E1] # LATIN SMALL LETTER A WITH ACUTE
+00C1 ; [.1224.0020.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0041 0301 ; [.1224.0020.0008.00C1] # LATIN CAPITAL LETTER A WITH ACUTE
+0111 ; [.1250.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0064 0335 ; [.1250.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0110 ; [.1250.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+0044 0335 ; [.1250.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+00F0 ; [.1251.0020.0002.00F0] # LATIN SMALL LETTER ETH
+00D0 ; [.1251.0020.0008.00D0] # LATIN CAPITAL LETTER ETH
+00E9 ; [.12A2.0020.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+0065 0301 ; [.12A2.0020.0002.00E9] # LATIN SMALL LETTER E WITH ACUTE
+00C9 ; [.12A2.0020.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+0045 0301 ; [.12A2.0020.0008.00C9] # LATIN CAPITAL LETTER E WITH ACUTE
+00ED ; [.1304.0020.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+0069 0301 ; [.1304.0020.0002.00ED] # LATIN SMALL LETTER I WITH ACUTE
+00CD ; [.1304.0020.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+0049 0301 ; [.1304.0020.0008.00CD] # LATIN CAPITAL LETTER I WITH ACUTE
+00F3 ; [.13B2.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+006F 0301 ; [.13B2.0020.0002.00F3] # LATIN SMALL LETTER O WITH ACUTE
+00D3 ; [.13B2.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+004F 0301 ; [.13B2.0020.0008.00D3] # LATIN CAPITAL LETTER O WITH ACUTE
+00FA ; [.147A.0020.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+0075 0301 ; [.147A.0020.0002.00FA] # LATIN SMALL LETTER U WITH ACUTE
+00DA ; [.147A.0020.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+0055 0301 ; [.147A.0020.0008.00DA] # LATIN CAPITAL LETTER U WITH ACUTE
+00FD ; [.14AC.0020.0002.00FD] # LATIN SMALL LETTER Y WITH ACUTE
+0079 0301 ; [.14AC.0020.0002.00FD] # LATIN SMALL LETTER Y WITH ACUTE
+00DD ; [.14AC.0020.0008.00DD] # LATIN CAPITAL LETTER Y WITH ACUTE
+0059 0301 ; [.14AC.0020.0008.00DD] # LATIN CAPITAL LETTER Y WITH ACUTE
+00E6 ; [.1522.0020.0002.00E6] # LATIN SMALL LETTER AE
+00C6 ; [.1522.0020.0008.00C6] # LATIN CAPITAL LETTER AE
+1D2D ; [.1522.0020.0014.1D2D] # MODIFIER LETTER CAPITAL AE
+01FD ; [.1522.0020.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
+01FC ; [.1522.0020.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
+01E3 ; [.1522.0020.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
+01E2 ; [.1522.0020.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
+00E4 ; [.1522.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+0061 0308 ; [.1522.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+00C4 ; [.1522.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0041 0308 ; [.1522.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+00F6 ; [.1523.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.1523.0020.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6 ; [.1523.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.1523.0020.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+00F8 ; [.1523.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+006F 0338 ; [.1523.0021.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+00D8 ; [.1523.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+004F 0338 ; [.1523.0021.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+01FF ; [.1523.0021.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+01FE ; [.1523.0021.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+00E5 ; [.1524.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+0061 030A ; [.1524.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+00C5 ; [.1524.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+0041 030A ; [.1524.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+212B ; [.1524.0020.0008.00C5] # ANGSTROM SIGN
+01FB ; [.1524.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FA ; [.1524.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/kl.pl b/cpan/Unicode-Collate/Collate/Locale/kl.pl
new file mode 100644
index 0000000000..5c525b8536
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/kl.pl
@@ -0,0 +1,60 @@
++{
+ entry => <<'ENTRY', # for DUCET v5.2.0
+0111 ; [.1250.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0064 0335 ; [.1250.0021.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0110 ; [.1250.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+0044 0335 ; [.1250.0021.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+00F0 ; [.1250.0022.0002.00F0] # LATIN SMALL LETTER ETH
+00D0 ; [.1250.0022.0008.00D0] # LATIN CAPITAL LETTER ETH
+0138 ; [.13C8.0021.0002.0138] # LATIN SMALL LETTER KRA
+004B 0027 ; [.13C8.0021.0008.004B] # <LATIN CAPITAL LETTER K, APOSTROPHE>
+00FE ; [.1433.0020.0003.00FE][.12D3.0020.0003.00FE] # LATIN SMALL LETTER THORN
+00DE ; [.1433.0020.0009.00DE][.12D3.0020.0009.00DE] # LATIN CAPITAL LETTER THORN
+00FC ; [.149C.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.149C.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC ; [.149C.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.149C.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0171 ; [.149C.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0075 030B ; [.149C.0022.0002.0171] # LATIN SMALL LETTER U WITH DOUBLE ACUTE
+0170 ; [.149C.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+0055 030B ; [.149C.0022.0008.0170] # LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+00E6 ; [.14AE.0020.0002.00E6] # LATIN SMALL LETTER AE
+00C6 ; [.14AE.0020.0008.00C6] # LATIN CAPITAL LETTER AE
+1D2D ; [.14AE.0020.0014.1D2D] # MODIFIER LETTER CAPITAL AE
+01FD ; [.14AE.0020.0002.00E6][.0000.0032.0002.0301] # LATIN SMALL LETTER AE WITH ACUTE
+01FC ; [.14AE.0020.0008.00C6][.0000.0032.0002.0301] # LATIN CAPITAL LETTER AE WITH ACUTE
+01E3 ; [.14AE.0020.0002.00E6][.0000.005B.0002.0304] # LATIN SMALL LETTER AE WITH MACRON
+01E2 ; [.14AE.0020.0008.00C6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER AE WITH MACRON
+00E4 ; [.14AE.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+0061 0308 ; [.14AE.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+00C4 ; [.14AE.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0041 0308 ; [.14AE.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0119 ; [.14AE.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0065 0328 ; [.14AE.0022.0002.0119] # LATIN SMALL LETTER E WITH OGONEK
+0118 ; [.14AE.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+0045 0328 ; [.14AE.0022.0008.0118] # LATIN CAPITAL LETTER E WITH OGONEK
+00F8 ; [.14AF.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+006F 0338 ; [.14AF.0020.0002.00F8] # LATIN SMALL LETTER O WITH STROKE
+00D8 ; [.14AF.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+004F 0338 ; [.14AF.0020.0008.00D8] # LATIN CAPITAL LETTER O WITH STROKE
+01FF ; [.14AF.0020.0002.00F8][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH STROKE AND ACUTE
+01FE ; [.14AF.0020.0008.00D8][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+00F6 ; [.14AF.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.14AF.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6 ; [.14AF.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.14AF.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+0151 ; [.14AF.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+006F 030B ; [.14AF.0022.0002.0151] # LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0150 ; [.14AF.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+004F 030B ; [.14AF.0022.0008.0150] # LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+0153 ; [.14AF.0023.0002.0153] # LATIN SMALL LIGATURE OE
+0152 ; [.14AF.0023.0008.0152] # LATIN CAPITAL LIGATURE OE
+00E5 ; [.14B0.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+0061 030A ; [.14B0.0020.0002.00E5] # LATIN SMALL LETTER A WITH RING ABOVE
+00C5 ; [.14B0.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+0041 030A ; [.14B0.0020.0008.00C5] # LATIN CAPITAL LETTER A WITH RING ABOVE
+212B ; [.14B0.0020.0008.00C5] # ANGSTROM SIGN
+01FB ; [.14B0.0020.0002.00E5][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+01FA ; [.14B0.0020.0008.00C5][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/sw.pl b/cpan/Unicode-Collate/Collate/Locale/sw.pl
new file mode 100644
index 0000000000..0a054d7802
--- /dev/null
+++ b/cpan/Unicode-Collate/Collate/Locale/sw.pl
@@ -0,0 +1,28 @@
++{
+ entry => <<'ENTRY', # for DUCET v5.2.0
+0063 0068 ; [.1226.0020.0002.0063] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
+0043 0068 ; [.1226.0020.0007.0043] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER H>
+0043 0048 ; [.1226.0020.0008.0043] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER H>
+0064 0068 ; [.1251.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER H>
+0044 0068 ; [.1251.0020.0007.0044] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER H>
+0044 0048 ; [.1251.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER H>
+0067 0068 ; [.12B1.0020.0002.0067] # <LATIN SMALL LETTER G, LATIN SMALL LETTER H>
+0047 0068 ; [.12B1.0020.0007.0047] # <LATIN CAPITAL LETTER G, LATIN SMALL LETTER H>
+0047 0048 ; [.12B1.0020.0008.0047] # <LATIN CAPITAL LETTER G, LATIN CAPITAL LETTER H>
+006B 0068 ; [.131F.0020.0002.006B] # <LATIN SMALL LETTER K, LATIN SMALL LETTER H>
+004B 0068 ; [.131F.0020.0007.004B] # <LATIN CAPITAL LETTER K, LATIN SMALL LETTER H>
+004B 0048 ; [.131F.0020.0008.004B] # <LATIN CAPITAL LETTER K, LATIN CAPITAL LETTER H>
+006E 0067 0027 ; [.136E.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER G, APOSTROPHE>
+004E 0067 0027 ; [.136E.0020.0007.004E] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER G, APOSTROPHE>
+004E 0047 0027 ; [.136E.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER G, APOSTROPHE>
+006E 0079 ; [.136F.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER Y>
+004E 0079 ; [.136F.0020.0007.004E] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER Y>
+004E 0059 ; [.136F.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER Y>
+0073 0068 ; [.1411.0020.0002.0073] # <LATIN SMALL LETTER S, LATIN SMALL LETTER H>
+0053 0068 ; [.1411.0020.0007.0053] # <LATIN CAPITAL LETTER S, LATIN SMALL LETTER H>
+0053 0048 ; [.1411.0020.0008.0053] # <LATIN CAPITAL LETTER S, LATIN CAPITAL LETTER H>
+0074 0068 ; [.1434.0020.0002.0074] # <LATIN SMALL LETTER T, LATIN SMALL LETTER H>
+0054 0068 ; [.1434.0020.0007.0054] # <LATIN CAPITAL LETTER T, LATIN SMALL LETTER H>
+0054 0048 ; [.1434.0020.0008.0054] # <LATIN CAPITAL LETTER T, LATIN CAPITAL LETTER H>
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/README b/cpan/Unicode-Collate/README
index 4d8f05e359..f3d2235615 100644
--- a/cpan/Unicode-Collate/README
+++ b/cpan/Unicode-Collate/README
@@ -1,4 +1,4 @@
-Unicode/Collate version 0.57
+Unicode/Collate version 0.58
===============================
NAME
diff --git a/cpan/Unicode-Collate/t/loc_af.t b/cpan/Unicode-Collate/t/loc_af.t
new file mode 100644
index 0000000000..c3c9af85f0
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_af.t
@@ -0,0 +1,28 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 8;
+
+my $objAf = Unicode::Collate::Locale->
+ new(locale => 'AF', normalization => undef);
+
+ok(1);
+ok($objAf->getlocale, 'af');
+
+$objAf->change(level => 1);
+
+ok($objAf->eq("n", "N"));
+ok($objAf->eq("N", "\x{149}"));
+
+$objAf->change(level => 2);
+
+ok($objAf->eq("n", "N"));
+ok($objAf->eq("N", "\x{149}"));
+
+$objAf->change(level => 3);
+
+ok($objAf->lt("n", "N"));
+ok($objAf->lt("N", "\x{149}"));
diff --git a/cpan/Unicode-Collate/t/loc_cy.t b/cpan/Unicode-Collate/t/loc_cy.t
new file mode 100644
index 0000000000..bc4d9821f7
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_cy.t
@@ -0,0 +1,105 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 74;
+
+my $objCy = Unicode::Collate::Locale->
+ new(locale => 'CY', normalization => undef);
+
+ok(1);
+ok($objCy->getlocale, 'cy');
+
+$objCy->change(level => 1);
+
+ok($objCy->lt("c", "ch"));
+ok($objCy->lt("cz","ch"));
+ok($objCy->gt("d", "ch"));
+ok($objCy->lt("d", "dd"));
+ok($objCy->lt("dz","dd"));
+ok($objCy->gt("e", "dd"));
+ok($objCy->lt("f", "ff"));
+ok($objCy->lt("fz","ff"));
+ok($objCy->gt("g", "ff"));
+ok($objCy->lt("g", "ng"));
+ok($objCy->lt("gz","ng"));
+ok($objCy->gt("h", "ng"));
+ok($objCy->lt("l", "ll"));
+ok($objCy->lt("lz","ll"));
+ok($objCy->gt("m", "ll"));
+ok($objCy->lt("p", "ph"));
+ok($objCy->lt("pz","ph"));
+ok($objCy->gt("q", "ph"));
+ok($objCy->lt("r", "rh"));
+ok($objCy->lt("rz","rh"));
+ok($objCy->gt("s", "rh"));
+ok($objCy->lt("t", "th"));
+ok($objCy->lt("tz","th"));
+ok($objCy->gt("u", "th"));
+
+# 26
+
+$objCy->change(level => 2);
+
+ok($objCy->eq("ch", "Ch"));
+ok($objCy->eq("CH", "Ch"));
+ok($objCy->eq("dd", "Dd"));
+ok($objCy->eq("DD", "Dd"));
+ok($objCy->eq("ff", "Ff"));
+ok($objCy->eq("FF", "Ff"));
+ok($objCy->eq("ng", "Ng"));
+ok($objCy->eq("NG", "Ng"));
+ok($objCy->eq("ll", "Ll"));
+ok($objCy->eq("LL", "Ll"));
+ok($objCy->eq("ph", "Ph"));
+ok($objCy->eq("PH", "Ph"));
+ok($objCy->eq("rh", "Rh"));
+ok($objCy->eq("RH", "Rh"));
+ok($objCy->eq("th", "Th"));
+ok($objCy->eq("TH", "Th"));
+
+# 42
+
+$objCy->change(level => 3);
+
+ok($objCy->lt("ch", "Ch"));
+ok($objCy->gt("CH", "Ch"));
+ok($objCy->lt("dd", "Dd"));
+ok($objCy->gt("DD", "Dd"));
+ok($objCy->lt("ff", "Ff"));
+ok($objCy->gt("FF", "Ff"));
+ok($objCy->lt("ng", "Ng"));
+ok($objCy->gt("NG", "Ng"));
+ok($objCy->lt("ll", "Ll"));
+ok($objCy->gt("LL", "Ll"));
+ok($objCy->lt("ph", "Ph"));
+ok($objCy->gt("PH", "Ph"));
+ok($objCy->lt("rh", "Rh"));
+ok($objCy->gt("RH", "Rh"));
+ok($objCy->lt("th", "Th"));
+ok($objCy->gt("TH", "Th"));
+
+# 58
+
+$objCy->change(upper_before_lower => 1);
+
+ok($objCy->gt("ch", "Ch"));
+ok($objCy->lt("CH", "Ch"));
+ok($objCy->gt("dd", "Dd"));
+ok($objCy->lt("DD", "Dd"));
+ok($objCy->gt("ff", "Ff"));
+ok($objCy->lt("FF", "Ff"));
+ok($objCy->gt("ng", "Ng"));
+ok($objCy->lt("NG", "Ng"));
+ok($objCy->gt("ll", "Ll"));
+ok($objCy->lt("LL", "Ll"));
+ok($objCy->gt("ph", "Ph"));
+ok($objCy->lt("PH", "Ph"));
+ok($objCy->gt("rh", "Rh"));
+ok($objCy->lt("RH", "Rh"));
+ok($objCy->gt("th", "Th"));
+ok($objCy->lt("TH", "Th"));
+
+# 74
diff --git a/cpan/Unicode-Collate/t/loc_da.t b/cpan/Unicode-Collate/t/loc_da.t
new file mode 100644
index 0000000000..73ec92328d
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_da.t
@@ -0,0 +1,157 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 99;
+
+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 $ae = pack 'U', 0xE6;
+my $AE = pack 'U', 0xC6;
+my $auml = pack 'U', 0xE4;
+my $Auml = pack 'U', 0xC4;
+my $ostk = pack 'U', 0xF8;
+my $Ostk = pack 'U', 0xD8;
+my $ouml = pack 'U', 0xF6;
+my $Ouml = pack 'U', 0xD6;
+my $arng = pack 'U', 0xE5;
+my $Arng = pack 'U', 0xC5;
+
+my $objDa = Unicode::Collate::Locale->
+ new(locale => 'DA', normalization => undef);
+
+ok(1);
+ok($objDa->getlocale, 'da');
+
+$objDa->change(level => 1);
+
+ok($objDa->lt('z', $ae));
+ok($objDa->lt($ae, $ostk));
+ok($objDa->lt($ostk, $arng));
+ok($objDa->lt($arng, "\x{292}"));
+
+# 6
+
+ok($objDa->eq('d', "\x{111}"));
+ok($objDa->eq("\x{111}", $eth));
+ok($objDa->eq('y', $uuml));
+ok($objDa->eq($uuml, "\x{171}"));
+ok($objDa->eq($ae, $auml));
+ok($objDa->eq($auml, "\x{119}"));
+ok($objDa->eq($ostk, $ouml));
+ok($objDa->eq($ouml, "\x{151}"));
+ok($objDa->eq("\x{151}", "\x{153}"));
+
+# 15
+
+$objDa->change(level => 2);
+
+ok($objDa->lt('d', "\x{111}"));
+ok($objDa->lt("\x{111}", $eth));
+ok($objDa->lt('y', $uuml));
+ok($objDa->lt($uuml, "\x{171}"));
+ok($objDa->lt($ae, $auml));
+ok($objDa->lt($auml, "\x{119}"));
+ok($objDa->lt($ostk, $ouml));
+ok($objDa->lt($ouml, "\x{151}"));
+ok($objDa->lt("\x{151}", "\x{153}"));
+
+# 24
+
+ok($objDa->eq("\x{111}", "\x{110}"));
+ok($objDa->eq($eth, $ETH));
+ok($objDa->eq('th', $thrn));
+ok($objDa->eq($thrn, 'TH'));
+ok($objDa->eq('TH', $THRN));
+ok($objDa->eq($uuml, $Uuml));
+ok($objDa->eq("\x{171}", "\x{170}"));
+ok($objDa->eq($ae, $AE));
+ok($objDa->eq($AE, "\x{1D2D}"));
+ok($objDa->eq($auml, $Auml));
+ok($objDa->eq("\x{119}", "\x{118}"));
+ok($objDa->eq($ostk, $Ostk));
+ok($objDa->eq($ouml, $Ouml));
+ok($objDa->eq("\x{151}", "\x{150}"));
+ok($objDa->eq("\x{153}", "\x{152}"));
+ok($objDa->eq($arng, $Arng));
+ok($objDa->eq($Arng, 'AA'));
+ok($objDa->eq('AA', 'aA'));
+ok($objDa->eq('aA', 'Aa'));
+ok($objDa->eq('Aa', $arng));
+ok($objDa->eq($arng, 'aa'));
+
+# 45
+
+$objDa->change(level => 3);
+
+ok($objDa->gt("\x{111}", "\x{110}"));
+ok($objDa->gt($eth, $ETH));
+ok($objDa->lt('th', $thrn));
+ok($objDa->gt($thrn, 'TH'));
+ok($objDa->lt('TH', $THRN));
+ok($objDa->gt($uuml, $Uuml));
+ok($objDa->gt("\x{171}", "\x{170}"));
+ok($objDa->gt($ae, $AE));
+ok($objDa->lt($AE, "\x{1D2D}"));
+ok($objDa->gt($auml, $Auml));
+ok($objDa->gt("\x{119}", "\x{118}"));
+ok($objDa->gt($ostk, $Ostk));
+ok($objDa->gt($ouml, $Ouml));
+ok($objDa->gt("\x{151}", "\x{150}"));
+ok($objDa->gt("\x{153}", "\x{152}"));
+ok($objDa->gt($arng, $Arng));
+ok($objDa->lt($Arng, 'AA'));
+ok($objDa->lt('AA', 'aA'));
+ok($objDa->lt('aA', 'Aa'));
+ok($objDa->lt('Aa', $arng));
+ok($objDa->lt($arng, 'aa'));
+
+# 66
+
+ok($objDa->eq("d\x{335}", "\x{111}"));
+ok($objDa->eq("D\x{335}", "\x{110}"));
+ok($objDa->eq("u\x{308}", $uuml));
+ok($objDa->eq("U\x{308}", $Uuml));
+ok($objDa->eq("u\x{30B}", "\x{171}"));
+ok($objDa->eq("U\x{30B}", "\x{170}"));
+ok($objDa->eq("\x{1FD}", "$ae\x{301}"));
+ok($objDa->eq("\x{1FC}", "$AE\x{301}"));
+ok($objDa->eq("\x{1E3}", "$ae\x{304}"));
+ok($objDa->eq("\x{1E2}", "$AE\x{304}"));
+ok($objDa->eq("a\x{308}", $auml));
+ok($objDa->eq("A\x{308}", $Auml));
+ok($objDa->eq("e\x{328}", "\x{119}"));
+ok($objDa->eq("E\x{328}", "\x{118}"));
+
+# 80
+
+ok($objDa->eq("o\x{338}", $ostk));
+ok($objDa->eq("O\x{338}", $Ostk));
+ok($objDa->eq("o\x{338}\x{301}", "\x{1FF}"));
+ok($objDa->eq("O\x{338}\x{301}", "\x{1FE}"));
+ok($objDa->eq("o\x{308}", $ouml));
+ok($objDa->eq("O\x{308}", $Ouml));
+ok($objDa->eq("o\x{30B}", "\x{151}"));
+ok($objDa->eq("O\x{30B}", "\x{150}"));
+ok($objDa->eq("a\x{30A}", $arng));
+ok($objDa->eq("A\x{30A}", $Arng));
+ok($objDa->eq("A\x{30A}", "\x{212B}"));
+ok($objDa->eq("a\x{30A}\x{301}", "\x{1FB}"));
+ok($objDa->eq("A\x{30A}\x{301}", "\x{1FA}"));
+
+# 93
+
+ok($objDa->gt("a", "A"));
+ok($objDa->gt("b", "B"));
+ok($objDa->gt("c", "C"));
+ok($objDa->gt("x", "X"));
+ok($objDa->gt("y", "Y"));
+ok($objDa->gt("z", "Z"));
+
+# 99
diff --git a/cpan/Unicode-Collate/t/loc_fo.t b/cpan/Unicode-Collate/t/loc_fo.t
new file mode 100644
index 0000000000..04799a2f55
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_fo.t
@@ -0,0 +1,148 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 93;
+
+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 $ae = pack 'U', 0xE6;
+my $AE = pack 'U', 0xC6;
+my $auml = pack 'U', 0xE4;
+my $Auml = pack 'U', 0xC4;
+my $ostk = pack 'U', 0xF8;
+my $Ostk = pack 'U', 0xD8;
+my $ouml = pack 'U', 0xF6;
+my $Ouml = pack 'U', 0xD6;
+my $arng = pack 'U', 0xE5;
+my $Arng = pack 'U', 0xC5;
+
+my $objFo = Unicode::Collate::Locale->
+ new(locale => 'FO', normalization => undef);
+
+ok(1);
+ok($objFo->getlocale, 'fo');
+
+$objFo->change(level => 1);
+
+ok($objFo->lt('z', $ae));
+ok($objFo->lt($ae, $ostk));
+ok($objFo->lt($ostk, $arng));
+ok($objFo->lt($arng, "\x{292}"));
+
+# 6
+
+ok($objFo->eq('d', "\x{111}"));
+ok($objFo->eq("\x{111}", $eth));
+ok($objFo->eq('y', $uuml));
+ok($objFo->eq($uuml, "\x{171}"));
+ok($objFo->eq($ae, $auml));
+ok($objFo->eq($auml, "\x{119}"));
+ok($objFo->eq($ostk, $ouml));
+ok($objFo->eq($ouml, "\x{151}"));
+ok($objFo->eq("\x{151}", "\x{153}"));
+
+# 15
+
+$objFo->change(level => 2);
+
+ok($objFo->lt('d', "\x{111}"));
+ok($objFo->lt("\x{111}", $eth));
+ok($objFo->lt('y', $uuml));
+ok($objFo->lt($uuml, "\x{171}"));
+ok($objFo->lt($ae, $auml));
+ok($objFo->lt($auml, "\x{119}"));
+ok($objFo->lt($ostk, $ouml));
+ok($objFo->lt($ouml, "\x{151}"));
+ok($objFo->lt("\x{151}", "\x{153}"));
+
+# 24
+
+ok($objFo->eq("\x{111}", "\x{110}"));
+ok($objFo->eq($eth, $ETH));
+ok($objFo->eq('th', $thrn));
+ok($objFo->eq($thrn, 'TH'));
+ok($objFo->eq('TH', $THRN));
+ok($objFo->eq($uuml, $Uuml));
+ok($objFo->eq("\x{171}", "\x{170}"));
+ok($objFo->eq($ae, $AE));
+ok($objFo->eq($AE, "\x{1D2D}"));
+ok($objFo->eq($auml, $Auml));
+ok($objFo->eq("\x{119}", "\x{118}"));
+ok($objFo->eq($ostk, $Ostk));
+ok($objFo->eq($ouml, $Ouml));
+ok($objFo->eq("\x{151}", "\x{150}"));
+ok($objFo->eq("\x{153}", "\x{152}"));
+ok($objFo->eq($arng, $Arng));
+ok($objFo->eq($Arng, 'aa'));
+ok($objFo->eq('aa', 'aA'));
+ok($objFo->eq('aA', 'Aa'));
+ok($objFo->eq('Aa', 'AA'));
+ok($objFo->eq('aa', 'AA'));
+
+# 45
+
+$objFo->change(level => 3);
+
+ok($objFo->lt("\x{111}", "\x{110}"));
+ok($objFo->lt($eth, $ETH));
+ok($objFo->lt('th', $thrn));
+ok($objFo->lt($thrn, 'TH'));
+ok($objFo->lt('TH', $THRN));
+ok($objFo->lt($uuml, $Uuml));
+ok($objFo->lt("\x{171}", "\x{170}"));
+ok($objFo->lt($ae, $AE));
+ok($objFo->lt($AE, "\x{1D2D}"));
+ok($objFo->lt($auml, $Auml));
+ok($objFo->lt("\x{119}", "\x{118}"));
+ok($objFo->lt($ostk, $Ostk));
+ok($objFo->lt($ouml, $Ouml));
+ok($objFo->lt("\x{151}", "\x{150}"));
+ok($objFo->lt("\x{153}", "\x{152}"));
+ok($objFo->lt($arng, $Arng));
+ok($objFo->lt($Arng, 'aa'));
+ok($objFo->lt('aa', 'aA'));
+ok($objFo->lt('aA', 'Aa'));
+ok($objFo->lt('Aa', 'AA'));
+ok($objFo->lt('aa', 'AA'));
+
+# 66
+
+ok($objFo->eq("d\x{335}", "\x{111}"));
+ok($objFo->eq("D\x{335}", "\x{110}"));
+ok($objFo->eq("u\x{308}", $uuml));
+ok($objFo->eq("U\x{308}", $Uuml));
+ok($objFo->eq("u\x{30B}", "\x{171}"));
+ok($objFo->eq("U\x{30B}", "\x{170}"));
+ok($objFo->eq("\x{1FD}", "$ae\x{301}"));
+ok($objFo->eq("\x{1FC}", "$AE\x{301}"));
+ok($objFo->eq("\x{1E3}", "$ae\x{304}"));
+ok($objFo->eq("\x{1E2}", "$AE\x{304}"));
+ok($objFo->eq("a\x{308}", $auml));
+ok($objFo->eq("A\x{308}", $Auml));
+ok($objFo->eq("e\x{328}", "\x{119}"));
+ok($objFo->eq("E\x{328}", "\x{118}"));
+
+# 80
+
+ok($objFo->eq("o\x{338}", $ostk));
+ok($objFo->eq("O\x{338}", $Ostk));
+ok($objFo->eq("o\x{338}\x{301}", "\x{1FF}"));
+ok($objFo->eq("O\x{338}\x{301}", "\x{1FE}"));
+ok($objFo->eq("o\x{308}", $ouml));
+ok($objFo->eq("O\x{308}", $Ouml));
+ok($objFo->eq("o\x{30B}", "\x{151}"));
+ok($objFo->eq("O\x{30B}", "\x{150}"));
+ok($objFo->eq("a\x{30A}", $arng));
+ok($objFo->eq("A\x{30A}", $Arng));
+ok($objFo->eq("A\x{30A}", "\x{212B}"));
+ok($objFo->eq("a\x{30A}\x{301}", "\x{1FB}"));
+ok($objFo->eq("A\x{30A}\x{301}", "\x{1FA}"));
+
+# 93
diff --git a/cpan/Unicode-Collate/t/loc_haw.t b/cpan/Unicode-Collate/t/loc_haw.t
new file mode 100644
index 0000000000..ad0f1b1b43
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_haw.t
@@ -0,0 +1,78 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 49;
+
+my $objHaw = Unicode::Collate::Locale->
+ new(locale => 'HAW', normalization => undef);
+
+ok(1);
+ok($objHaw->getlocale, 'haw');
+
+$objHaw->change(level => 1);
+
+ok($objHaw->lt('a', 'e'));
+ok($objHaw->lt('e', 'i'));
+ok($objHaw->lt('i', 'o'));
+ok($objHaw->lt('o', 'u'));
+ok($objHaw->lt('u', 'h'));
+ok($objHaw->lt('h', 'k'));
+ok($objHaw->lt('k', 'l'));
+ok($objHaw->lt('l', 'm'));
+ok($objHaw->lt('m', 'n'));
+ok($objHaw->lt('n', 'p'));
+ok($objHaw->lt('p', 'w'));
+ok($objHaw->lt('w', "\x{2BB}"));
+ok($objHaw->gt('b', "\x{2BB}"));
+
+# 15
+
+$objHaw->change(level => 2);
+
+ok($objHaw->eq('a', 'A'));
+ok($objHaw->eq('e', 'E'));
+ok($objHaw->eq('i', 'I'));
+ok($objHaw->eq('o', 'O'));
+ok($objHaw->eq('u', 'U'));
+ok($objHaw->eq('h', 'H'));
+ok($objHaw->eq('k', 'K'));
+ok($objHaw->eq('l', 'L'));
+ok($objHaw->eq('m', 'M'));
+ok($objHaw->eq('n', 'N'));
+ok($objHaw->eq('p', 'P'));
+ok($objHaw->eq('w', 'W'));
+
+# 27
+
+$objHaw->change(level => 3);
+
+ok($objHaw->lt('a', 'A'));
+ok($objHaw->lt('e', 'E'));
+ok($objHaw->lt('i', 'I'));
+ok($objHaw->lt('o', 'O'));
+ok($objHaw->lt('u', 'U'));
+ok($objHaw->lt('h', 'H'));
+ok($objHaw->lt('k', 'K'));
+ok($objHaw->lt('l', 'L'));
+ok($objHaw->lt('m', 'M'));
+ok($objHaw->lt('n', 'N'));
+ok($objHaw->lt('p', 'P'));
+ok($objHaw->lt('w', 'W'));
+
+# 39
+
+ok($objHaw->eq("a\x{304}", "\x{101}"));
+ok($objHaw->eq("A\x{304}", "\x{100}"));
+ok($objHaw->eq("e\x{304}", "\x{113}"));
+ok($objHaw->eq("E\x{304}", "\x{112}"));
+ok($objHaw->eq("i\x{304}", "\x{12B}"));
+ok($objHaw->eq("I\x{304}", "\x{12A}"));
+ok($objHaw->eq("o\x{304}", "\x{14D}"));
+ok($objHaw->eq("O\x{304}", "\x{14C}"));
+ok($objHaw->eq("u\x{304}", "\x{16B}"));
+ok($objHaw->eq("U\x{304}", "\x{16A}"));
+
+# 49
diff --git a/cpan/Unicode-Collate/t/loc_is.t b/cpan/Unicode-Collate/t/loc_is.t
new file mode 100644
index 0000000000..25a50a67c8
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_is.t
@@ -0,0 +1,153 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 94;
+
+my $eth = pack 'U', 0xF0;
+my $ETH = pack 'U', 0xD0;
+my $thrn = pack 'U', 0xFE;
+my $THRN = pack 'U', 0xDE;
+my $ae = pack 'U', 0xE6;
+my $AE = pack 'U', 0xC6;
+my $auml = pack 'U', 0xE4;
+my $Auml = pack 'U', 0xC4;
+my $ouml = pack 'U', 0xF6;
+my $Ouml = pack 'U', 0xD6;
+my $ostk = pack 'U', 0xF8;
+my $Ostk = pack 'U', 0xD8;
+my $arng = pack 'U', 0xE5;
+my $Arng = pack 'U', 0xC5;
+
+my $objIs = Unicode::Collate::Locale->
+ new(locale => 'IS', normalization => undef);
+
+ok(1);
+ok($objIs->getlocale, 'is');
+
+$objIs->change(level => 1);
+
+ok($objIs->lt('a', "a\x{301}"));
+ok($objIs->gt('b', "a\x{301}"));
+ok($objIs->lt('d', $eth));
+ok($objIs->gt('e', $eth));
+ok($objIs->lt('e', "e\x{301}"));
+ok($objIs->gt('f', "e\x{301}"));
+ok($objIs->lt('i', "i\x{301}"));
+ok($objIs->gt('j', "i\x{301}"));
+ok($objIs->lt('o', "o\x{301}"));
+ok($objIs->gt('p', "o\x{301}"));
+ok($objIs->lt('u', "u\x{301}"));
+ok($objIs->gt('v', "u\x{301}"));
+ok($objIs->lt('y', "y\x{301}"));
+ok($objIs->gt('z', "y\x{301}"));
+
+# 16
+
+ok($objIs->lt('z', $thrn));
+ok($objIs->lt($thrn, $ae));
+ok($objIs->lt($ae, $ouml));
+ok($objIs->lt($ouml, $arng));
+ok($objIs->lt($arng, "\x{1C0}"));
+
+# 21
+
+ok($objIs->eq('d', "d\x{335}"));
+ok($objIs->eq($ae, $auml));
+ok($objIs->eq($ouml, $ostk));
+
+$objIs->change(level => 2);
+
+ok($objIs->lt('d', "d\x{335}"));
+ok($objIs->lt($ae, $auml));
+ok($objIs->lt($ouml, $ostk));
+
+# 27
+
+ok($objIs->eq("a\x{301}", "A\x{301}"));
+ok($objIs->eq("d\x{335}", "D\x{335}"));
+ok($objIs->eq($eth, $ETH));
+ok($objIs->eq("e\x{301}", "E\x{301}"));
+ok($objIs->eq("i\x{301}", "I\x{301}"));
+ok($objIs->eq("o\x{301}", "O\x{301}"));
+ok($objIs->eq("u\x{301}", "U\x{301}"));
+ok($objIs->eq("y\x{301}", "Y\x{301}"));
+ok($objIs->eq($thrn, $THRN));
+ok($objIs->eq($ae, $AE));
+ok($objIs->eq($AE, "\x{1D2D}"));
+ok($objIs->eq($auml, $Auml));
+ok($objIs->eq($ouml, $Ouml));
+ok($objIs->eq($ostk, $Ostk));
+ok($objIs->eq($arng, $Arng));
+
+# 42
+
+$objIs->change(level => 3);
+
+ok($objIs->lt("a\x{301}", "A\x{301}"));
+ok($objIs->lt("d\x{335}", "D\x{335}"));
+ok($objIs->lt($eth, $ETH));
+ok($objIs->lt("e\x{301}", "E\x{301}"));
+ok($objIs->lt("i\x{301}", "I\x{301}"));
+ok($objIs->lt("o\x{301}", "O\x{301}"));
+ok($objIs->lt("u\x{301}", "U\x{301}"));
+ok($objIs->lt("y\x{301}", "Y\x{301}"));
+ok($objIs->lt($thrn, $THRN));
+ok($objIs->lt($ae, $AE));
+ok($objIs->lt($AE, "\x{1D2D}"));
+ok($objIs->lt($auml, $Auml));
+ok($objIs->lt($ouml, $Ouml));
+ok($objIs->lt($ostk, $Ostk));
+ok($objIs->lt($arng, $Arng));
+
+# 57
+
+ok($objIs->eq("a\x{301}", pack('U', 0xE1)));
+ok($objIs->eq("A\x{301}", pack('U', 0xC1)));
+ok($objIs->eq("d\x{335}", "\x{111}"));
+ok($objIs->eq("D\x{335}", "\x{110}"));
+ok($objIs->eq("e\x{301}", pack('U', 0xE9)));
+ok($objIs->eq("E\x{301}", pack('U', 0xC9)));
+ok($objIs->eq("i\x{301}", pack('U', 0xED)));
+ok($objIs->eq("I\x{301}", pack('U', 0xCD)));
+ok($objIs->eq("o\x{301}", pack('U', 0xF3)));
+ok($objIs->eq("O\x{301}", pack('U', 0xD3)));
+ok($objIs->eq("u\x{301}", pack('U', 0xFA)));
+ok($objIs->eq("U\x{301}", pack('U', 0xDA)));
+ok($objIs->eq("y\x{301}", pack('U', 0xFD)));
+ok($objIs->eq("Y\x{301}", pack('U', 0xDD)));
+
+# 71
+
+ok($objIs->eq("\x{1FD}", "$ae\x{301}"));
+ok($objIs->eq("\x{1FC}", "$AE\x{301}"));
+ok($objIs->eq("\x{1E3}", "$ae\x{304}"));
+ok($objIs->eq("\x{1E2}", "$AE\x{304}"));
+ok($objIs->eq("a\x{308}", $auml));
+ok($objIs->eq("A\x{308}", $Auml));
+ok($objIs->eq("o\x{308}", $ouml));
+ok($objIs->eq("O\x{308}", $Ouml));
+ok($objIs->eq("o\x{338}", $ostk));
+ok($objIs->eq("O\x{338}", $Ostk));
+ok($objIs->eq("o\x{338}\x{301}", "\x{1FF}"));
+ok($objIs->eq("O\x{338}\x{301}", "\x{1FE}"));
+ok($objIs->eq("a\x{30A}", $arng));
+ok($objIs->eq("A\x{30A}", $Arng));
+ok($objIs->eq("A\x{30A}", "\x{212B}"));
+ok($objIs->eq("a\x{30A}\x{301}", "\x{1FB}"));
+ok($objIs->eq("A\x{30A}\x{301}", "\x{1FA}"));
+
+# 88
+
+$objIs->change(upper_before_lower => 1);
+
+ok($objIs->gt($ae, $AE));
+ok($objIs->lt($AE, "\x{1D2D}"));
+ok($objIs->gt($auml, $Auml));
+ok($objIs->gt($ouml, $Ouml));
+ok($objIs->gt($ostk, $Ostk));
+ok($objIs->gt($arng, $Arng));
+
+# 94
diff --git a/cpan/Unicode-Collate/t/loc_kl.t b/cpan/Unicode-Collate/t/loc_kl.t
new file mode 100644
index 0000000000..5b0a9a708a
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_kl.t
@@ -0,0 +1,144 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 89;
+
+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 $ae = pack 'U', 0xE6;
+my $AE = pack 'U', 0xC6;
+my $auml = pack 'U', 0xE4;
+my $Auml = pack 'U', 0xC4;
+my $ostk = pack 'U', 0xF8;
+my $Ostk = pack 'U', 0xD8;
+my $ouml = pack 'U', 0xF6;
+my $Ouml = pack 'U', 0xD6;
+my $arng = pack 'U', 0xE5;
+my $Arng = pack 'U', 0xC5;
+
+my $objKl = Unicode::Collate::Locale->
+ new(locale => 'KL', normalization => undef);
+
+ok(1);
+ok($objKl->getlocale, 'kl');
+
+$objKl->change(level => 1);
+
+ok($objKl->lt('z', $ae));
+ok($objKl->lt($ae, $ostk));
+ok($objKl->lt($ostk, $arng));
+ok($objKl->lt($arng, "\x{292}"));
+
+# 6
+
+ok($objKl->eq('d', "\x{111}"));
+ok($objKl->eq("\x{111}", $eth));
+ok($objKl->eq('q', "\x{138}"));
+ok($objKl->eq('q', "K'"));
+ok($objKl->eq('y', $uuml));
+ok($objKl->eq($uuml, "\x{171}"));
+ok($objKl->eq($ae, $auml));
+ok($objKl->eq($auml, "\x{119}"));
+ok($objKl->eq($ostk, $ouml));
+ok($objKl->eq($ouml, "\x{151}"));
+ok($objKl->eq("\x{151}", "\x{153}"));
+
+# 17
+
+$objKl->change(level => 2);
+
+ok($objKl->lt('d', "\x{111}"));
+ok($objKl->lt("\x{111}", $eth));
+ok($objKl->lt('q', "\x{138}"));
+ok($objKl->lt('q', "K'"));
+ok($objKl->lt('y', $uuml));
+ok($objKl->lt($uuml, "\x{171}"));
+ok($objKl->lt($ae, $auml));
+ok($objKl->lt($auml, "\x{119}"));
+ok($objKl->lt($ostk, $ouml));
+ok($objKl->lt($ouml, "\x{151}"));
+ok($objKl->lt("\x{151}", "\x{153}"));
+
+# 28
+
+ok($objKl->eq("\x{111}", "\x{110}"));
+ok($objKl->eq($eth, $ETH));
+ok($objKl->eq("\x{138}", "K'"));
+ok($objKl->eq('th', $thrn));
+ok($objKl->eq($thrn, 'TH'));
+ok($objKl->eq('TH', $THRN));
+ok($objKl->eq($uuml, $Uuml));
+ok($objKl->eq("\x{171}", "\x{170}"));
+ok($objKl->eq($ae, $AE));
+ok($objKl->eq($AE, "\x{1D2D}"));
+ok($objKl->eq($auml, $Auml));
+ok($objKl->eq("\x{119}", "\x{118}"));
+ok($objKl->eq($ostk, $Ostk));
+ok($objKl->eq($ouml, $Ouml));
+ok($objKl->eq("\x{151}", "\x{150}"));
+ok($objKl->eq("\x{153}", "\x{152}"));
+ok($objKl->eq($arng, $Arng));
+
+# 45
+
+$objKl->change(level => 3);
+
+ok($objKl->lt("\x{111}", "\x{110}"));
+ok($objKl->lt($eth, $ETH));
+ok($objKl->lt("\x{138}", "K'"));
+ok($objKl->lt('th', $thrn));
+ok($objKl->lt($thrn, 'TH'));
+ok($objKl->lt('TH', $THRN));
+ok($objKl->lt($uuml, $Uuml));
+ok($objKl->lt("\x{171}", "\x{170}"));
+ok($objKl->lt($ae, $AE));
+ok($objKl->lt($AE, "\x{1D2D}"));
+ok($objKl->lt($auml, $Auml));
+ok($objKl->lt("\x{119}", "\x{118}"));
+ok($objKl->lt($ostk, $Ostk));
+ok($objKl->lt($ouml, $Ouml));
+ok($objKl->lt("\x{151}", "\x{150}"));
+ok($objKl->lt("\x{153}", "\x{152}"));
+ok($objKl->lt($arng, $Arng));
+
+# 62
+
+ok($objKl->eq("d\x{335}", "\x{111}"));
+ok($objKl->eq("D\x{335}", "\x{110}"));
+ok($objKl->eq("u\x{308}", $uuml));
+ok($objKl->eq("U\x{308}", $Uuml));
+ok($objKl->eq("u\x{30B}", "\x{171}"));
+ok($objKl->eq("U\x{30B}", "\x{170}"));
+ok($objKl->eq("\x{1FD}", "$ae\x{301}"));
+ok($objKl->eq("\x{1FC}", "$AE\x{301}"));
+ok($objKl->eq("\x{1E3}", "$ae\x{304}"));
+ok($objKl->eq("\x{1E2}", "$AE\x{304}"));
+ok($objKl->eq("a\x{308}", $auml));
+ok($objKl->eq("A\x{308}", $Auml));
+ok($objKl->eq("e\x{328}", "\x{119}"));
+ok($objKl->eq("E\x{328}", "\x{118}"));
+
+# 76
+
+ok($objKl->eq("o\x{338}", $ostk));
+ok($objKl->eq("O\x{338}", $Ostk));
+ok($objKl->eq("o\x{338}\x{301}", "\x{1FF}"));
+ok($objKl->eq("O\x{338}\x{301}", "\x{1FE}"));
+ok($objKl->eq("o\x{308}", $ouml));
+ok($objKl->eq("O\x{308}", $Ouml));
+ok($objKl->eq("o\x{30B}", "\x{151}"));
+ok($objKl->eq("O\x{30B}", "\x{150}"));
+ok($objKl->eq("a\x{30A}", $arng));
+ok($objKl->eq("A\x{30A}", $Arng));
+ok($objKl->eq("A\x{30A}", "\x{212B}"));
+ok($objKl->eq("a\x{30A}\x{301}", "\x{1FB}"));
+ok($objKl->eq("A\x{30A}\x{301}", "\x{1FA}"));
+
+# 89
diff --git a/cpan/Unicode-Collate/t/loc_nb.t b/cpan/Unicode-Collate/t/loc_nb.t
index 4ad83526f4..80fc45ed0e 100644
--- a/cpan/Unicode-Collate/t/loc_nb.t
+++ b/cpan/Unicode-Collate/t/loc_nb.t
@@ -34,14 +34,14 @@ $objNb->change(level => 1);
ok($objNb->lt("z", $ae));
ok($objNb->lt($ae, $ostk));
ok($objNb->lt($ostk, $arng));
-ok($objNb->lt($arng, "\x{0292}"));
+ok($objNb->lt($arng, "\x{292}"));
# 6
ok($objNb->eq('d', "\x{111}"));
ok($objNb->eq("\x{111}", $eth));
ok($objNb->eq('y', $uuml));
-ok($objNb->eq($uuml, "\x{0171}"));
+ok($objNb->eq($uuml, "\x{171}"));
ok($objNb->eq($ae, $auml));
ok($objNb->eq($auml, "\x{119}"));
@@ -56,7 +56,7 @@ $objNb->change(level => 2);
ok($objNb->lt('d', "\x{111}"));
ok($objNb->lt("\x{111}", $eth));
ok($objNb->lt('y', $uuml));
-ok($objNb->lt($uuml, "\x{0171}"));
+ok($objNb->lt($uuml, "\x{171}"));
ok($objNb->lt($ae, $auml));
ok($objNb->lt($auml, "\x{119}"));
diff --git a/cpan/Unicode-Collate/t/loc_nn.t b/cpan/Unicode-Collate/t/loc_nn.t
index 87e0862afc..a3092a1aef 100644
--- a/cpan/Unicode-Collate/t/loc_nn.t
+++ b/cpan/Unicode-Collate/t/loc_nn.t
@@ -34,14 +34,14 @@ $objNn->change(level => 1);
ok($objNn->lt("z", $ae));
ok($objNn->lt($ae, $ostk));
ok($objNn->lt($ostk, $arng));
-ok($objNn->lt($arng, "\x{0292}"));
+ok($objNn->lt($arng, "\x{292}"));
# 6
ok($objNn->eq('d', "\x{111}"));
ok($objNn->eq("\x{111}", $eth));
ok($objNn->eq('y', $uuml));
-ok($objNn->eq($uuml, "\x{0171}"));
+ok($objNn->eq($uuml, "\x{171}"));
ok($objNn->eq($ae, $auml));
ok($objNn->eq($auml, "\x{119}"));
@@ -56,7 +56,7 @@ $objNn->change(level => 2);
ok($objNn->lt('d', "\x{111}"));
ok($objNn->lt("\x{111}", $eth));
ok($objNn->lt('y', $uuml));
-ok($objNn->lt($uuml, "\x{0171}"));
+ok($objNn->lt($uuml, "\x{171}"));
ok($objNn->lt($ae, $auml));
ok($objNn->lt($auml, "\x{119}"));
diff --git a/cpan/Unicode-Collate/t/loc_sv.t b/cpan/Unicode-Collate/t/loc_sv.t
index 7ffbe4f7d1..b695bc1b60 100644
--- a/cpan/Unicode-Collate/t/loc_sv.t
+++ b/cpan/Unicode-Collate/t/loc_sv.t
@@ -36,14 +36,14 @@ $objSv->change(level => 1);
ok($objSv->lt('z', $arng));
ok($objSv->lt($arng, $auml));
ok($objSv->lt($auml, $ouml));
-ok($objSv->lt($ouml, "\x{0292}"));
+ok($objSv->lt($ouml, "\x{292}"));
# 6
ok($objSv->eq('d', "\x{111}"));
ok($objSv->eq("\x{111}", $eth));
ok($objSv->eq('y', $uuml));
-ok($objSv->eq($uuml, "\x{0171}"));
+ok($objSv->eq($uuml, "\x{171}"));
ok($objSv->eq($auml, $ae));
ok($objSv->eq($ae, "\x{119}"));
@@ -59,7 +59,7 @@ $objSv->change(level => 2);
ok($objSv->lt('d', "\x{111}"));
ok($objSv->lt("\x{111}", $eth));
ok($objSv->lt('y', $uuml));
-ok($objSv->lt($uuml, "\x{0171}"));
+ok($objSv->lt($uuml, "\x{171}"));
ok($objSv->lt($auml, $ae));
ok($objSv->lt($ae, "\x{119}"));
diff --git a/cpan/Unicode-Collate/t/loc_sw.t b/cpan/Unicode-Collate/t/loc_sw.t
new file mode 100644
index 0000000000..e019e1f51f
--- /dev/null
+++ b/cpan/Unicode-Collate/t/loc_sw.t
@@ -0,0 +1,103 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 72;
+
+my $objSw = Unicode::Collate::Locale->
+ new(locale => 'SW', normalization => undef);
+
+ok(1);
+ok($objSw->getlocale, 'sw');
+
+$objSw->change(level => 1);
+
+ok($objSw->lt("b", "ch"));
+ok($objSw->lt("bz","ch"));
+ok($objSw->gt("c", "ch"));
+ok($objSw->lt("d", "dh"));
+ok($objSw->lt("dz","dh"));
+ok($objSw->gt("e", "dh"));
+ok($objSw->lt("g", "gh"));
+ok($objSw->lt("gz","gh"));
+ok($objSw->gt("h", "gh"));
+ok($objSw->lt("k", "kh"));
+ok($objSw->lt("kz","kh"));
+ok($objSw->gt("l", "kh"));
+ok($objSw->lt("n", "ng'"));
+ok($objSw->lt("nz","ng'"));
+ok($objSw->lt("ng'","ny"));
+ok($objSw->gt("o", "ny"));
+ok($objSw->lt("s", "sh"));
+ok($objSw->lt("sz","sh"));
+ok($objSw->gt("t", "sh"));
+ok($objSw->lt("t", "th"));
+ok($objSw->lt("tz","th"));
+ok($objSw->gt("u", "th"));
+
+# 24
+
+$objSw->change(level => 2);
+
+ok($objSw->eq("ch", "Ch"));
+ok($objSw->eq("CH", "Ch"));
+ok($objSw->eq("dh", "Dh"));
+ok($objSw->eq("DH", "Dh"));
+ok($objSw->eq("gh", "Gh"));
+ok($objSw->eq("GH", "Gh"));
+ok($objSw->eq("kh", "Kh"));
+ok($objSw->eq("KH", "Kh"));
+ok($objSw->eq("ng'","Ng'"));
+ok($objSw->eq("NG'","Ng'"));
+ok($objSw->eq("ny", "Ny"));
+ok($objSw->eq("NY", "Ny"));
+ok($objSw->eq("sh", "Sh"));
+ok($objSw->eq("SH", "Sh"));
+ok($objSw->eq("th", "Th"));
+ok($objSw->eq("TH", "Th"));
+
+# 40
+
+$objSw->change(level => 3);
+
+ok($objSw->lt("ch", "Ch"));
+ok($objSw->gt("CH", "Ch"));
+ok($objSw->lt("dh", "Dh"));
+ok($objSw->gt("DH", "Dh"));
+ok($objSw->lt("gh", "Gh"));
+ok($objSw->gt("GH", "Gh"));
+ok($objSw->lt("kh", "Kh"));
+ok($objSw->gt("KH", "Kh"));
+ok($objSw->lt("ng'","Ng'"));
+ok($objSw->gt("NG'","Ng'"));
+ok($objSw->lt("ny", "Ny"));
+ok($objSw->gt("NY", "Ny"));
+ok($objSw->lt("sh", "Sh"));
+ok($objSw->gt("SH", "Sh"));
+ok($objSw->lt("th", "Th"));
+ok($objSw->gt("TH", "Th"));
+
+# 56
+
+$objSw->change(upper_before_lower => 1);
+
+ok($objSw->gt("ch", "Ch"));
+ok($objSw->lt("CH", "Ch"));
+ok($objSw->gt("dh", "Dh"));
+ok($objSw->lt("DH", "Dh"));
+ok($objSw->gt("gh", "Gh"));
+ok($objSw->lt("GH", "Gh"));
+ok($objSw->gt("kh", "Kh"));
+ok($objSw->lt("KH", "Kh"));
+ok($objSw->gt("ng'","Ng'"));
+ok($objSw->lt("NG'","Ng'"));
+ok($objSw->gt("ny", "Ny"));
+ok($objSw->lt("NY", "Ny"));
+ok($objSw->gt("sh", "Sh"));
+ok($objSw->lt("SH", "Sh"));
+ok($objSw->gt("th", "Th"));
+ok($objSw->lt("TH", "Th"));
+
+# 72