This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Updated Unicode-Collate to CPAN version 0.60
authorChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Thu, 23 Sep 2010 16:46:43 +0000 (17:46 +0100)
committerChris 'BinGOs' Williams <chris@bingosnet.co.uk>
Thu, 23 Sep 2010 16:47:50 +0000 (17:47 +0100)
  [DELTA]

  0.60  Thu Sep 23 21:37:36 2010
    - bug fix: index() [and its friends including gmatch()] didn't remove
      ignorable characters in the substring correctly.
      Thanks for the bug report:
   http://www.xray.mpe.mpg.de/mailing-lists/perl-unicode/2010-09/msg00014.html

    - U::C::Locale newly supports locales: de__phonebook, nso, om, tn, vi.
    - precomposites of a-breve, a-circ, e-circ, o-circ are tailored as well.
        (affected locales: ro, sk, sv)

35 files changed:
MANIFEST
Porting/Maintainers.pl
cpan/Unicode-Collate/Changes
cpan/Unicode-Collate/Collate.pm
cpan/Unicode-Collate/Collate/Locale.pm
cpan/Unicode-Collate/Collate/Locale/de_phone.pl [new file with mode: 0644]
cpan/Unicode-Collate/Collate/Locale/nso.pl [new file with mode: 0644]
cpan/Unicode-Collate/Collate/Locale/om.pl [new file with mode: 0644]
cpan/Unicode-Collate/Collate/Locale/ro.pl
cpan/Unicode-Collate/Collate/Locale/sk.pl
cpan/Unicode-Collate/Collate/Locale/sv.pl
cpan/Unicode-Collate/Collate/Locale/tn.pl [new file with mode: 0644]
cpan/Unicode-Collate/Collate/Locale/vi.pl [new file with mode: 0644]
cpan/Unicode-Collate/README
cpan/Unicode-Collate/t/index.t
cpan/Unicode-Collate/t/loc_cy.t
cpan/Unicode-Collate/t/loc_da.t
cpan/Unicode-Collate/t/loc_de.t [new file with mode: 0644]
cpan/Unicode-Collate/t/loc_deph.t [new file with mode: 0644]
cpan/Unicode-Collate/t/loc_fi.t
cpan/Unicode-Collate/t/loc_fo.t
cpan/Unicode-Collate/t/loc_fr.t
cpan/Unicode-Collate/t/loc_is.t
cpan/Unicode-Collate/t/loc_kl.t
cpan/Unicode-Collate/t/loc_nb.t
cpan/Unicode-Collate/t/loc_nn.t
cpan/Unicode-Collate/t/loc_nso.t [new file with mode: 0644]
cpan/Unicode-Collate/t/loc_om.t [new file with mode: 0644]
cpan/Unicode-Collate/t/loc_ro.t
cpan/Unicode-Collate/t/loc_sk.t
cpan/Unicode-Collate/t/loc_sv.t
cpan/Unicode-Collate/t/loc_sw.t
cpan/Unicode-Collate/t/loc_tn.t [new file with mode: 0644]
cpan/Unicode-Collate/t/loc_vi.t [new file with mode: 0644]
pod/perldelta.pod

index d0b8b16..c935b4e 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -2394,6 +2394,7 @@ 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/de_phone.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
@@ -2410,6 +2411,8 @@ cpan/Unicode-Collate/Collate/Locale/lt.pl                 Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/lv.pl                      Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/mt.pl                      Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/nn.pl                      Unicode::Collate
+cpan/Unicode-Collate/Collate/Locale/nso.pl                     Unicode::Collate
+cpan/Unicode-Collate/Collate/Locale/om.pl                      Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/pl.pl                      Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale.pm                 Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/ro.pl                      Unicode::Collate
@@ -2417,7 +2420,9 @@ 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/Locale/tn.pl                      Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/tr.pl                      Unicode::Collate
+cpan/Unicode-Collate/Collate/Locale/vi.pl                      Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/wo.pl                      Unicode::Collate
 cpan/Unicode-Collate/Collate/Locale/yo.pl                      Unicode::Collate
 cpan/Unicode-Collate/Collate.pm                        Unicode::Collate
@@ -2438,6 +2443,8 @@ 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_deph.t                      Unicode::Collate
+cpan/Unicode-Collate/t/loc_de.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
@@ -2455,6 +2462,8 @@ cpan/Unicode-Collate/t/loc_lv.t                   Unicode::Collate
 cpan/Unicode-Collate/t/loc_mt.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_nb.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_nn.t                        Unicode::Collate
+cpan/Unicode-Collate/t/loc_nso.t                       Unicode::Collate
+cpan/Unicode-Collate/t/loc_om.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_pl.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_ro.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_sk.t                        Unicode::Collate
@@ -2462,7 +2471,9 @@ 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/loc_tn.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_tr.t                        Unicode::Collate
+cpan/Unicode-Collate/t/loc_vi.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_wo.t                        Unicode::Collate
 cpan/Unicode-Collate/t/loc_yo.t                        Unicode::Collate
 cpan/Unicode-Collate/t/normal.t                        Unicode::Collate
index 4b153bb..fb65347 100755 (executable)
@@ -1506,7 +1506,7 @@ use File::Glob qw(:case);
     'Unicode::Collate' =>
        {
        'MAINTAINER'    => 'sadahiro',
-       'DISTRIBUTION'  => 'SADAHIRO/Unicode-Collate-0.59-withoutworldwriteables.tar.gz',
+       'DISTRIBUTION'  => 'SADAHIRO/Unicode-Collate-0.60-withoutworldwriteables.tar.gz',
        'FILES'         => q[cpan/Unicode-Collate],
                            # ignore experimental XS version
        'EXCLUDED'      => [ qr{X$},
index 646b93b..cc7e75f 100644 (file)
@@ -1,5 +1,15 @@
 Revision history for Perl module Unicode::Collate.
 
+0.60  Thu Sep 23 21:37:36 2010
+    - bug fix: index() [and its friends including gmatch()] didn't remove
+      ignorable characters in the substring correctly.
+      Thanks for the bug report:
+   http://www.xray.mpe.mpg.de/mailing-lists/perl-unicode/2010-09/msg00014.html
+
+    - U::C::Locale newly supports locales: de__phonebook, nso, om, tn, vi.
+    - precomposites of 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.
     - precomposites of a-uml, o-uml, and u-uml are tailored as well.
@@ -32,7 +42,7 @@ Revision history for Perl module Unicode::Collate.
 
     ! DUCET will be compiled when XS is used. Explicit saying
       <table => 'allkeys.txt'> (or using another table) will prevent
-      this module using the compiled DUCET.
+      this module from using the compiled DUCET.
 
     ! added t/default.t that uses DUCET.
 
index 0836453..bdc00dd 100644 (file)
@@ -14,7 +14,7 @@ use File::Spec;
 
 no warnings 'utf8';
 
-our $VERSION = '0.59';
+our $VERSION = '0.60';
 our $PACKAGE = __PACKAGE__;
 
 my @Path = qw(Unicode Collate);
@@ -1015,9 +1015,10 @@ sub index
 
        if (@subWt && !$var && !$wt[0]) {
            push @{ $subWt[-1] }, \@wt if $to_be_pushed;
-       } else {
+       } elsif ($to_be_pushed) {
            push @subWt, [ \@wt ];
        }
+       # else ===> skipped
     }
 
     my $count = 0;
@@ -1536,7 +1537,7 @@ B<NOTE>: When XSUB is used, the DUCET is compiled on building this
 module, and it may save time at the run time.
 Explicit saying C<table =E<gt> 'allkeys.txt'> (or using another table),
 or using C<ignoreChar>, C<ignoreName>, C<undefChar>, or C<undefName>
-will prevent this module using the compiled DUCET.
+will prevent this module from using the compiled DUCET.
 
 If C<undef> is passed explicitly as the value for this key,
 no file is read (but you can define collation elements via C<entry>).
index 4803df9..0715ca9 100644 (file)
@@ -4,7 +4,7 @@ use strict;
 use Carp;
 use base qw(Unicode::Collate);
 
-our $VERSION = '0.59';
+our $VERSION = '0.60';
 
 use File::Spec;
 
@@ -14,9 +14,10 @@ my $PL_EXT  = '.pl';
 
 my %LocaleFile = map { ($_, $_) } qw(
    af az ca cs cy da eo es et fi fil fo fr ha haw
-   is kl lt lv mt nn pl ro sk sl sv sw tr wo yo
+   is kl lt lv mt nn nso om pl ro sk sl sv sw tn tr vi wo yo
 );
    $LocaleFile{'default'}         = '';
+   $LocaleFile{'de__phonebook'}   = 'de_phone';
    $LocaleFile{'es__traditional'} = 'es_trad';
    $LocaleFile{'nb'} = 'nn';
 
@@ -25,6 +26,7 @@ sub _locale {
     if ($locale) {
        $locale = lc $locale;
        $locale =~ tr/\-\ \./_/;
+       $locale =~ s/_phone\z/_phonebook/;
        $locale =~ s/_trad\z/_traditional/;
        $LocaleFile{$locale} and return $locale;
 
@@ -159,6 +161,7 @@ this method returns a string C<'default'> meaning no special tailoring.
       cs                Czech
       cy                Welsh
       da                Danish
+      de__phonebook     German (umlaut as 'ae', 'oe', 'ue')
       eo                Esperanto
       es                Spanish
       es__traditional   Spanish ('ch' and 'll' as a grapheme)
@@ -176,13 +179,17 @@ this method returns a string C<'default'> meaning no special tailoring.
       mt                Maltese
       nb                Norwegian Bokmal
       nn                Norwegian Nynorsk
+      nso               Northern Sotho
+      om                Oromo
       pl                Polish
       ro                Romanian
       sk                Slovak
       sl                Slovenian
       sv                Swedish
       sw                Swahili
+      tn                Tswana
       tr                Turkish
+      vi                Vietnamese
       wo                Wolof
       yo                Yoruba
 
@@ -193,6 +200,20 @@ F<Collate/Locale/*.pm> and F<Collate/allkeys.txt>.  On building,
 Unicode::Collate::Locale doesn't require F<data/*.txt> and F<mklocale>.
 Tests for Unicode::Collate::Locale are named F<t/loc_*.t>.
 
+=head1 CAVEAT
+
+=over 4
+
+=item tailoring is not maximum
+
+If a certain letter is tailored, its equivalents are not always
+tailored as well as it. For example, even though W is tailored,
+fullwidth W (C<U+FF37>), W with acute (C<U+1E82>), etc. are not
+tailored. Thus the result may depend on whether source strings
+are normalized or not.
+
+=back
+
 =head1 AUTHOR
 
 The Unicode::Collate::Locale module for perl was written
diff --git a/cpan/Unicode-Collate/Collate/Locale/de_phone.pl b/cpan/Unicode-Collate/Collate/Locale/de_phone.pl
new file mode 100644 (file)
index 0000000..a4405ec
--- /dev/null
@@ -0,0 +1,28 @@
++{
+   entry => <<'ENTRY', # for DUCET v5.2.0
+00E4      ; [.120F.0021.0002.00E4][.126B.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+0061 0308 ; [.120F.0021.0002.00E4][.126B.0021.0002.00E4] # LATIN SMALL LETTER A WITH DIAERESIS
+00C4      ; [.120F.0021.0008.00C4][.126B.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+0041 0308 ; [.120F.0021.0008.00C4][.126B.0021.0008.00C4] # LATIN CAPITAL LETTER A WITH DIAERESIS
+01DF      ; [.120F.0021.0002.00E4][.126B.0021.0002.00E4][.0000.005B.0002.0304] # LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+01DE      ; [.120F.0021.0008.00C4][.126B.0021.0008.00C4][.0000.005B.0002.0304] # LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+00F6      ; [.138E.0021.0002.00F6][.126B.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+006F 0308 ; [.138E.0021.0002.00F6][.126B.0021.0002.00F6] # LATIN SMALL LETTER O WITH DIAERESIS
+00D6      ; [.138E.0021.0008.00D6][.126B.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+004F 0308 ; [.138E.0021.0008.00D6][.126B.0021.0008.00D6] # LATIN CAPITAL LETTER O WITH DIAERESIS
+022B      ; [.138E.0021.0002.00F6][.126B.0021.0002.00F6][.0000.005B.0002.0304] # LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+022A      ; [.138E.0021.0008.00D6][.126B.0021.0008.00D6][.0000.005B.0002.0304] # LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+00FC      ; [.1453.0021.0002.00FC][.126B.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+0075 0308 ; [.1453.0021.0002.00FC][.126B.0021.0002.00FC] # LATIN SMALL LETTER U WITH DIAERESIS
+00DC      ; [.1453.0021.0008.00DC][.126B.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+0055 0308 ; [.1453.0021.0008.00DC][.126B.0021.0008.00DC] # LATIN CAPITAL LETTER U WITH DIAERESIS
+01DC      ; [.1453.0021.0002.00FC][.126B.0021.0002.00FC][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DB      ; [.1453.0021.0008.00DC][.126B.0021.0008.00DC][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+01D8      ; [.1453.0021.0002.00FC][.126B.0021.0002.00FC][.0000.0032.0002.0301] # LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+01D7      ; [.1453.0021.0008.00DC][.126B.0021.0008.00DC][.0000.0032.0002.0301] # LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+01D6      ; [.1453.0021.0002.00FC][.126B.0021.0002.00FC][.0000.005B.0002.0304] # LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+01D5      ; [.1453.0021.0008.00DC][.126B.0021.0008.00DC][.0000.005B.0002.0304] # LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+01DA      ; [.1453.0021.0002.00FC][.126B.0021.0002.00FC][.0000.0041.0002.030C] # LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+01D9      ; [.1453.0021.0008.00DC][.126B.0021.0008.00DC][.0000.0041.0002.030C] # LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/nso.pl b/cpan/Unicode-Collate/Collate/Locale/nso.pl
new file mode 100644 (file)
index 0000000..2d20e1e
--- /dev/null
@@ -0,0 +1,36 @@
++{
+   entry => <<'ENTRY', # for DUCET v5.2.0
+00EA      ; [.126C.0020.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0065 0302 ; [.126C.0020.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+00CA      ; [.126C.0020.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0045 0302 ; [.126C.0020.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+1EC1      ; [.126C.0020.0002.00EA][.0000.0035.0002.0300] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC0      ; [.126C.0020.0008.00CA][.0000.0035.0002.0300] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EBF      ; [.126C.0020.0002.00EA][.0000.0032.0002.0301] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EBE      ; [.126C.0020.0008.00CA][.0000.0032.0002.0301] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC5      ; [.126C.0020.0002.00EA][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC4      ; [.126C.0020.0008.00CA][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC3      ; [.126C.0020.0002.00EA][.0000.0064.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC2      ; [.126C.0020.0008.00CA][.0000.0064.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC7      ; [.126C.0020.0002.00EA][.0000.0070.0002.0323] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC6      ; [.126C.0020.0008.00CA][.0000.0070.0002.0323] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+00F4      ; [.138F.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+006F 0302 ; [.138F.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+00D4      ; [.138F.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+004F 0302 ; [.138F.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+1ED3      ; [.138F.0020.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED2      ; [.138F.0020.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED1      ; [.138F.0020.0002.00F4][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED0      ; [.138F.0020.0008.00D4][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED7      ; [.138F.0020.0002.00F4][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED6      ; [.138F.0020.0008.00D4][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED5      ; [.138F.0020.0002.00F4][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED4      ; [.138F.0020.0008.00D4][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED9      ; [.138F.0020.0002.00F4][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED8      ; [.138F.0020.0008.00D4][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+0161      ; [.1411.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0073 030C ; [.1411.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0160      ; [.1411.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+0053 030C ; [.1411.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/om.pl b/cpan/Unicode-Collate/Collate/Locale/om.pl
new file mode 100644 (file)
index 0000000..ad7aa41
--- /dev/null
@@ -0,0 +1,21 @@
++{
+   entry => <<'ENTRY', # for DUCET v5.2.0
+0063 0068 ; [.14AE.0020.0002.0063] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
+0043 0068 ; [.14AE.0020.0007.0043] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER H>
+0043 0048 ; [.14AE.0020.0008.0043] # <LATIN CAPITAL LETTER C, LATIN CAPITAL LETTER H>
+0064 0068 ; [.14AF.0020.0002.0064] # <LATIN SMALL LETTER D, LATIN SMALL LETTER H>
+0044 0068 ; [.14AF.0020.0007.0044] # <LATIN CAPITAL LETTER D, LATIN SMALL LETTER H>
+0044 0048 ; [.14AF.0020.0008.0044] # <LATIN CAPITAL LETTER D, LATIN CAPITAL LETTER H>
+006B 0068 ; [.14B0.0020.0002.006B] # <LATIN SMALL LETTER K, LATIN SMALL LETTER H>
+004B 0068 ; [.14B0.0020.0007.004B] # <LATIN CAPITAL LETTER K, LATIN SMALL LETTER H>
+004B 0048 ; [.14B0.0020.0008.004B] # <LATIN CAPITAL LETTER K, LATIN CAPITAL LETTER H>
+006E 0079 ; [.14B1.0020.0002.006E] # <LATIN SMALL LETTER N, LATIN SMALL LETTER Y>
+004E 0079 ; [.14B1.0020.0007.004E] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER Y>
+004E 0059 ; [.14B1.0020.0008.004E] # <LATIN CAPITAL LETTER N, LATIN CAPITAL LETTER Y>
+0070 0068 ; [.14B2.0020.0002.0070] # <LATIN SMALL LETTER P, LATIN SMALL LETTER H>
+0050 0068 ; [.14B2.0020.0007.0050] # <LATIN CAPITAL LETTER P, LATIN SMALL LETTER H>
+0050 0048 ; [.14B2.0020.0008.0050] # <LATIN CAPITAL LETTER P, LATIN CAPITAL LETTER H>
+0073 0068 ; [.14B3.0020.0002.0073] # <LATIN SMALL LETTER S, LATIN SMALL LETTER H>
+0053 0068 ; [.14B3.0020.0007.0053] # <LATIN CAPITAL LETTER S, LATIN SMALL LETTER H>
+ENTRY
+};
index 35c7f33..f59ca14 100644 (file)
@@ -4,10 +4,30 @@
 0061 0306 ; [.1210.0020.0002.0103] # LATIN SMALL LETTER A WITH BREVE
 0102      ; [.1210.0020.0008.0102] # LATIN CAPITAL LETTER A WITH BREVE
 0041 0306 ; [.1210.0020.0008.0102] # LATIN CAPITAL LETTER A WITH BREVE
+1EB1      ; [.1210.0020.0002.0103][.0000.0035.0002.0300] # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+1EB0      ; [.1210.0020.0008.0102][.0000.0035.0002.0300] # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+1EAF      ; [.1210.0020.0002.0103][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+1EAE      ; [.1210.0020.0008.0102][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+1EB5      ; [.1210.0020.0002.0103][.0000.004E.0002.0303] # LATIN SMALL LETTER A WITH BREVE AND TILDE
+1EB4      ; [.1210.0020.0008.0102][.0000.004E.0002.0303] # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+1EB3      ; [.1210.0020.0002.0103][.0000.0064.0002.0309] # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+1EB2      ; [.1210.0020.0008.0102][.0000.0064.0002.0309] # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+1EB7      ; [.1210.0020.0002.0103][.0000.0070.0002.0323] # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+1EB6      ; [.1210.0020.0008.0102][.0000.0070.0002.0323] # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
 00E2      ; [.1211.0020.0002.00E2] # LATIN SMALL LETTER A WITH CIRCUMFLEX
 0061 0302 ; [.1211.0020.0002.00E2] # LATIN SMALL LETTER A WITH CIRCUMFLEX
 00C2      ; [.1211.0020.0008.00C2] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
 0041 0302 ; [.1211.0020.0008.00C2] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+1EA7      ; [.1211.0020.0002.00E2][.0000.0035.0002.0300] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA6      ; [.1211.0020.0008.00C2][.0000.0035.0002.0300] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA5      ; [.1211.0020.0002.00E2][.0000.0032.0002.0301] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA4      ; [.1211.0020.0008.00C2][.0000.0032.0002.0301] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EAB      ; [.1211.0020.0002.00E2][.0000.004E.0002.0303] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAA      ; [.1211.0020.0008.00C2][.0000.004E.0002.0303] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+1EA9      ; [.1211.0020.0002.00E2][.0000.0064.0002.0309] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EA8      ; [.1211.0020.0008.00C2][.0000.0064.0002.0309] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EAD      ; [.1211.0020.0002.00E2][.0000.0070.0002.0323] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAC      ; [.1211.0020.0008.00C2][.0000.0070.0002.0323] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
 0111      ; [.1251.0020.0002.0111] # LATIN SMALL LETTER D WITH STROKE
 0064 0335 ; [.1251.0020.0002.0111] # LATIN SMALL LETTER D WITH STROKE
 0110      ; [.1251.0020.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
index dc42f44..fe100ce 100644 (file)
 006F 0302 ; [.138F.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
 00D4      ; [.138F.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
 004F 0302 ; [.138F.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+1ED3      ; [.138F.0020.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED2      ; [.138F.0020.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED1      ; [.138F.0020.0002.00F4][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED0      ; [.138F.0020.0008.00D4][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED7      ; [.138F.0020.0002.00F4][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED6      ; [.138F.0020.0008.00D4][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED5      ; [.138F.0020.0002.00F4][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED4      ; [.138F.0020.0008.00D4][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED9      ; [.138F.0020.0002.00F4][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED8      ; [.138F.0020.0008.00D4][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
 0161      ; [.1411.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
 0073 030C ; [.1411.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
 0160      ; [.1411.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
index a039152..c04bed4 100644 (file)
 006F 0302 ; [.14B0.0024.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
 00D4      ; [.14B0.0024.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
 004F 0302 ; [.14B0.0024.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+1ED3      ; [.14B0.0024.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED2      ; [.14B0.0024.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED1      ; [.14B0.0024.0002.00F4][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED0      ; [.14B0.0024.0008.00D4][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED7      ; [.14B0.0024.0002.00F4][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED6      ; [.14B0.0024.0008.00D4][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED5      ; [.14B0.0024.0002.00F4][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED4      ; [.14B0.0024.0008.00D4][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED9      ; [.14B0.0024.0002.00F4][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED8      ; [.14B0.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/tn.pl b/cpan/Unicode-Collate/Collate/Locale/tn.pl
new file mode 100644 (file)
index 0000000..2d20e1e
--- /dev/null
@@ -0,0 +1,36 @@
++{
+   entry => <<'ENTRY', # for DUCET v5.2.0
+00EA      ; [.126C.0020.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0065 0302 ; [.126C.0020.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+00CA      ; [.126C.0020.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0045 0302 ; [.126C.0020.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+1EC1      ; [.126C.0020.0002.00EA][.0000.0035.0002.0300] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC0      ; [.126C.0020.0008.00CA][.0000.0035.0002.0300] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EBF      ; [.126C.0020.0002.00EA][.0000.0032.0002.0301] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EBE      ; [.126C.0020.0008.00CA][.0000.0032.0002.0301] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC5      ; [.126C.0020.0002.00EA][.0000.004E.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC4      ; [.126C.0020.0008.00CA][.0000.004E.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC3      ; [.126C.0020.0002.00EA][.0000.0064.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC2      ; [.126C.0020.0008.00CA][.0000.0064.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC7      ; [.126C.0020.0002.00EA][.0000.0070.0002.0323] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC6      ; [.126C.0020.0008.00CA][.0000.0070.0002.0323] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+00F4      ; [.138F.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+006F 0302 ; [.138F.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+00D4      ; [.138F.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+004F 0302 ; [.138F.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+1ED3      ; [.138F.0020.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED2      ; [.138F.0020.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED1      ; [.138F.0020.0002.00F4][.0000.0032.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED0      ; [.138F.0020.0008.00D4][.0000.0032.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED7      ; [.138F.0020.0002.00F4][.0000.004E.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED6      ; [.138F.0020.0008.00D4][.0000.004E.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED5      ; [.138F.0020.0002.00F4][.0000.0064.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED4      ; [.138F.0020.0008.00D4][.0000.0064.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED9      ; [.138F.0020.0002.00F4][.0000.0070.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED8      ; [.138F.0020.0008.00D4][.0000.0070.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+0161      ; [.1411.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0073 030C ; [.1411.0020.0002.0161] # LATIN SMALL LETTER S WITH CARON
+0160      ; [.1411.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+0053 030C ; [.1411.0020.0008.0160] # LATIN CAPITAL LETTER S WITH CARON
+ENTRY
+};
diff --git a/cpan/Unicode-Collate/Collate/Locale/vi.pl b/cpan/Unicode-Collate/Collate/Locale/vi.pl
new file mode 100644 (file)
index 0000000..2057ecf
--- /dev/null
@@ -0,0 +1,154 @@
++{
+# 0306 is not a Vietnamese tone, just to avoid \x{303} eq \x{306}.
+   entry => <<'ENTRY', # for DUCET v5.2.0
+0309      ; [.0000.0036.0002.0309] # COMBINING HOOK ABOVE
+1EA3      ; [.120F.0020.0002.0061][.0000.0036.0002.0309] # LATIN SMALL LETTER A WITH HOOK ABOVE
+1EA2      ; [.120F.0020.0008.0041][.0000.0036.0002.0309] # LATIN CAPITAL LETTER A WITH HOOK ABOVE
+1EBB      ; [.126B.0020.0002.0065][.0000.0036.0002.0309] # LATIN SMALL LETTER E WITH HOOK ABOVE
+1EBA      ; [.126B.0020.0008.0045][.0000.0036.0002.0309] # LATIN CAPITAL LETTER E WITH HOOK ABOVE
+1EC9      ; [.12EC.0020.0002.0069][.0000.0036.0002.0309] # LATIN SMALL LETTER I WITH HOOK ABOVE
+1EC8      ; [.12EC.0020.0008.0049][.0000.0036.0002.0309] # LATIN CAPITAL LETTER I WITH HOOK ABOVE
+1ECF      ; [.138E.0020.0002.006F][.0000.0036.0002.0309] # LATIN SMALL LETTER O WITH HOOK ABOVE
+1ECE      ; [.138E.0020.0008.004F][.0000.0036.0002.0309] # LATIN CAPITAL LETTER O WITH HOOK ABOVE
+1EE7      ; [.1453.0020.0002.0075][.0000.0036.0002.0309] # LATIN SMALL LETTER U WITH HOOK ABOVE
+1EE6      ; [.1453.0020.0008.0055][.0000.0036.0002.0309] # LATIN CAPITAL LETTER U WITH HOOK ABOVE
+1EF7      ; [.149C.0020.0002.0079][.0000.0036.0002.0309] # LATIN SMALL LETTER Y WITH HOOK ABOVE
+1EF6      ; [.149C.0020.0008.0059][.0000.0036.0002.0309] # LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+0303      ; [.0000.0037.0002.0303] # COMBINING TILDE
+00E3      ; [.120F.0020.0002.0061][.0000.0037.0002.0303] # LATIN SMALL LETTER A WITH TILDE
+00C3      ; [.120F.0020.0008.0041][.0000.0037.0002.0303] # LATIN CAPITAL LETTER A WITH TILDE
+1EBD      ; [.126B.0020.0002.0065][.0000.0037.0002.0303] # LATIN SMALL LETTER E WITH TILDE
+1EBC      ; [.126B.0020.0008.0045][.0000.0037.0002.0303] # LATIN CAPITAL LETTER E WITH TILDE
+0129      ; [.12EC.0020.0002.0069][.0000.0037.0002.0303] # LATIN SMALL LETTER I WITH TILDE
+0128      ; [.12EC.0020.0008.0049][.0000.0037.0002.0303] # LATIN CAPITAL LETTER I WITH TILDE
+00F5      ; [.138E.0020.0002.006F][.0000.0037.0002.0303] # LATIN SMALL LETTER O WITH TILDE
+00D5      ; [.138E.0020.0008.004F][.0000.0037.0002.0303] # LATIN CAPITAL LETTER O WITH TILDE
+0169      ; [.1453.0020.0002.0075][.0000.0037.0002.0303] # LATIN SMALL LETTER U WITH TILDE
+0168      ; [.1453.0020.0008.0055][.0000.0037.0002.0303] # LATIN CAPITAL LETTER U WITH TILDE
+1EF9      ; [.149C.0020.0002.0079][.0000.0037.0002.0303] # LATIN SMALL LETTER Y WITH TILDE
+1EF8      ; [.149C.0020.0008.0059][.0000.0037.0002.0303] # LATIN CAPITAL LETTER Y WITH TILDE
+0301      ; [.0000.0038.0002.0301] # COMBINING ACUTE ACCENT
+00E1      ; [.120F.0020.0002.0061][.0000.0038.0002.0301] # LATIN SMALL LETTER A WITH ACUTE
+00C1      ; [.120F.0020.0008.0041][.0000.0038.0002.0301] # LATIN CAPITAL LETTER A WITH ACUTE
+00E9      ; [.126B.0020.0002.0065][.0000.0038.0002.0301] # LATIN SMALL LETTER E WITH ACUTE
+00C9      ; [.126B.0020.0008.0045][.0000.0038.0002.0301] # LATIN CAPITAL LETTER E WITH ACUTE
+00ED      ; [.12EC.0020.0002.0069][.0000.0038.0002.0301] # LATIN SMALL LETTER I WITH ACUTE
+00CD      ; [.12EC.0020.0008.0049][.0000.0038.0002.0301] # LATIN CAPITAL LETTER I WITH ACUTE
+00F3      ; [.138E.0020.0002.006F][.0000.0038.0002.0301] # LATIN SMALL LETTER O WITH ACUTE
+00D3      ; [.138E.0020.0008.004F][.0000.0038.0002.0301] # LATIN CAPITAL LETTER O WITH ACUTE
+00FA      ; [.1453.0020.0002.0075][.0000.0038.0002.0301] # LATIN SMALL LETTER U WITH ACUTE
+00DA      ; [.1453.0020.0008.0055][.0000.0038.0002.0301] # LATIN CAPITAL LETTER U WITH ACUTE
+00FD      ; [.149C.0020.0002.0079][.0000.0038.0002.0301] # LATIN SMALL LETTER Y WITH ACUTE
+00DD      ; [.149C.0020.0008.0059][.0000.0038.0002.0301] # LATIN CAPITAL LETTER Y WITH ACUTE
+0323      ; [.0000.0039.0002.0323] # COMBINING DOT BELOW
+1EA1      ; [.120F.0020.0002.0061][.0000.0039.0002.0323] # LATIN SMALL LETTER A WITH DOT BELOW
+1EA0      ; [.120F.0020.0008.0041][.0000.0039.0002.0323] # LATIN CAPITAL LETTER A WITH DOT BELOW
+1EB9      ; [.126B.0020.0002.0065][.0000.0039.0002.0323] # LATIN SMALL LETTER E WITH DOT BELOW
+1EB8      ; [.126B.0020.0008.0045][.0000.0039.0002.0323] # LATIN CAPITAL LETTER E WITH DOT BELOW
+1ECB      ; [.12EC.0020.0002.0069][.0000.0039.0002.0323] # LATIN SMALL LETTER I WITH DOT BELOW
+1ECA      ; [.12EC.0020.0008.0049][.0000.0039.0002.0323] # LATIN CAPITAL LETTER I WITH DOT BELOW
+1ECD      ; [.138E.0020.0002.006F][.0000.0039.0002.0323] # LATIN SMALL LETTER O WITH DOT BELOW
+1ECC      ; [.138E.0020.0008.004F][.0000.0039.0002.0323] # LATIN CAPITAL LETTER O WITH DOT BELOW
+1EE5      ; [.1453.0020.0002.0075][.0000.0039.0002.0323] # LATIN SMALL LETTER U WITH DOT BELOW
+1EE4      ; [.1453.0020.0008.0055][.0000.0039.0002.0323] # LATIN CAPITAL LETTER U WITH DOT BELOW
+1EF5      ; [.149C.0020.0002.0079][.0000.0039.0002.0323] # LATIN SMALL LETTER Y WITH DOT BELOW
+1EF4      ; [.149C.0020.0008.0059][.0000.0039.0002.0323] # LATIN CAPITAL LETTER Y WITH DOT BELOW
+0306      ; [.0000.003A.0002.0306] # COMBINING BREVE
+0115      ; [.126B.0020.0002.0065][.0000.003A.0002.0306] # LATIN SMALL LETTER E WITH BREVE
+0114      ; [.126B.0020.0008.0045][.0000.003A.0002.0306] # LATIN CAPITAL LETTER E WITH BREVE
+012D      ; [.12EC.0020.0002.0069][.0000.003A.0002.0306] # LATIN SMALL LETTER I WITH BREVE
+012C      ; [.12EC.0020.0008.0049][.0000.003A.0002.0306] # LATIN CAPITAL LETTER I WITH BREVE
+014F      ; [.138E.0020.0002.006F][.0000.003A.0002.0306] # LATIN SMALL LETTER O WITH BREVE
+014E      ; [.138E.0020.0008.004F][.0000.003A.0002.0306] # LATIN CAPITAL LETTER O WITH BREVE
+016D      ; [.1453.0020.0002.0075][.0000.003A.0002.0306] # LATIN SMALL LETTER U WITH BREVE
+016C      ; [.1453.0020.0008.0055][.0000.003A.0002.0306] # LATIN CAPITAL LETTER U WITH BREVE
+0103      ; [.1210.0020.0002.0103] # LATIN SMALL LETTER A WITH BREVE
+0061 0306 ; [.1210.0020.0002.0103] # LATIN SMALL LETTER A WITH BREVE
+0102      ; [.1210.0020.0008.0102] # LATIN CAPITAL LETTER A WITH BREVE
+0041 0306 ; [.1210.0020.0008.0102] # LATIN CAPITAL LETTER A WITH BREVE
+1EB1      ; [.1210.0020.0002.0103][.0000.0035.0002.0300] # LATIN SMALL LETTER A WITH BREVE AND GRAVE
+1EB0      ; [.1210.0020.0008.0102][.0000.0035.0002.0300] # LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+1EAF      ; [.1210.0020.0002.0103][.0000.0038.0002.0301] # LATIN SMALL LETTER A WITH BREVE AND ACUTE
+1EAE      ; [.1210.0020.0008.0102][.0000.0038.0002.0301] # LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+1EB5      ; [.1210.0020.0002.0103][.0000.0037.0002.0303] # LATIN SMALL LETTER A WITH BREVE AND TILDE
+1EB4      ; [.1210.0020.0008.0102][.0000.0037.0002.0303] # LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+1EB3      ; [.1210.0020.0002.0103][.0000.0036.0002.0309] # LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+1EB2      ; [.1210.0020.0008.0102][.0000.0036.0002.0309] # LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+1EB7      ; [.1210.0020.0002.0103][.0000.0039.0002.0323] # LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+1EB6      ; [.1210.0020.0008.0102][.0000.0039.0002.0323] # LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+00E2      ; [.1211.0020.0002.00E2] # LATIN SMALL LETTER A WITH CIRCUMFLEX
+0061 0302 ; [.1211.0020.0002.00E2] # LATIN SMALL LETTER A WITH CIRCUMFLEX
+00C2      ; [.1211.0020.0008.00C2] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+0041 0302 ; [.1211.0020.0008.00C2] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+1EA7      ; [.1211.0020.0002.00E2][.0000.0035.0002.0300] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA6      ; [.1211.0020.0008.00C2][.0000.0035.0002.0300] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+1EA5      ; [.1211.0020.0002.00E2][.0000.0038.0002.0301] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EA4      ; [.1211.0020.0008.00C2][.0000.0038.0002.0301] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+1EAB      ; [.1211.0020.0002.00E2][.0000.0037.0002.0303] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+1EAA      ; [.1211.0020.0008.00C2][.0000.0037.0002.0303] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+1EA9      ; [.1211.0020.0002.00E2][.0000.0036.0002.0309] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EA8      ; [.1211.0020.0008.00C2][.0000.0036.0002.0309] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+1EAD      ; [.1211.0020.0002.00E2][.0000.0039.0002.0323] # LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+1EAC      ; [.1211.0020.0008.00C2][.0000.0039.0002.0323] # LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+0111      ; [.1251.0020.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0064 0335 ; [.1251.0020.0002.0111] # LATIN SMALL LETTER D WITH STROKE
+0110      ; [.1251.0020.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+0044 0335 ; [.1251.0020.0008.0110] # LATIN CAPITAL LETTER D WITH STROKE
+00EA      ; [.126C.0020.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+0065 0302 ; [.126C.0020.0002.00EA] # LATIN SMALL LETTER E WITH CIRCUMFLEX
+00CA      ; [.126C.0020.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+0045 0302 ; [.126C.0020.0008.00CA] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+1EC1      ; [.126C.0020.0002.00EA][.0000.0035.0002.0300] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EC0      ; [.126C.0020.0008.00CA][.0000.0035.0002.0300] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+1EBF      ; [.126C.0020.0002.00EA][.0000.0038.0002.0301] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EBE      ; [.126C.0020.0008.00CA][.0000.0038.0002.0301] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+1EC5      ; [.126C.0020.0002.00EA][.0000.0037.0002.0303] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC4      ; [.126C.0020.0008.00CA][.0000.0037.0002.0303] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+1EC3      ; [.126C.0020.0002.00EA][.0000.0036.0002.0309] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC2      ; [.126C.0020.0008.00CA][.0000.0036.0002.0309] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+1EC7      ; [.126C.0020.0002.00EA][.0000.0039.0002.0323] # LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+1EC6      ; [.126C.0020.0008.00CA][.0000.0039.0002.0323] # LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+00F4      ; [.138F.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+006F 0302 ; [.138F.0020.0002.00F4] # LATIN SMALL LETTER O WITH CIRCUMFLEX
+00D4      ; [.138F.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+004F 0302 ; [.138F.0020.0008.00D4] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+1ED3      ; [.138F.0020.0002.00F4][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED2      ; [.138F.0020.0008.00D4][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+1ED1      ; [.138F.0020.0002.00F4][.0000.0038.0002.0301] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED0      ; [.138F.0020.0008.00D4][.0000.0038.0002.0301] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+1ED7      ; [.138F.0020.0002.00F4][.0000.0037.0002.0303] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED6      ; [.138F.0020.0008.00D4][.0000.0037.0002.0303] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+1ED5      ; [.138F.0020.0002.00F4][.0000.0036.0002.0309] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED4      ; [.138F.0020.0008.00D4][.0000.0036.0002.0309] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+1ED9      ; [.138F.0020.0002.00F4][.0000.0039.0002.0323] # LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+1ED8      ; [.138F.0020.0008.00D4][.0000.0039.0002.0323] # LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+01A1      ; [.1390.0020.0002.01A1] # LATIN SMALL LETTER O WITH HORN
+006F 031B ; [.1390.0020.0002.01A1] # LATIN SMALL LETTER O WITH HORN
+01A0      ; [.1390.0020.0008.01A0] # LATIN CAPITAL LETTER O WITH HORN
+004F 031B ; [.1390.0020.0008.01A0] # LATIN CAPITAL LETTER O WITH HORN
+1EDD      ; [.1390.0020.0002.01A1][.0000.0035.0002.0300] # LATIN SMALL LETTER O WITH HORN AND GRAVE
+1EDC      ; [.1390.0020.0008.01A0][.0000.0035.0002.0300] # LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+1EDB      ; [.1390.0020.0002.01A1][.0000.0038.0002.0301] # LATIN SMALL LETTER O WITH HORN AND ACUTE
+1EDA      ; [.1390.0020.0008.01A0][.0000.0038.0002.0301] # LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+1EE1      ; [.1390.0020.0002.01A1][.0000.0037.0002.0303] # LATIN SMALL LETTER O WITH HORN AND TILDE
+1EE0      ; [.1390.0020.0008.01A0][.0000.0037.0002.0303] # LATIN CAPITAL LETTER O WITH HORN AND TILDE
+1EDF      ; [.1390.0020.0002.01A1][.0000.0036.0002.0309] # LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+1EDE      ; [.1390.0020.0008.01A0][.0000.0036.0002.0309] # LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+1EE3      ; [.1390.0020.0002.01A1][.0000.0039.0002.0323] # LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+1EE2      ; [.1390.0020.0008.01A0][.0000.0039.0002.0323] # LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+01B0      ; [.1454.0020.0002.01B0] # LATIN SMALL LETTER U WITH HORN
+0075 031B ; [.1454.0020.0002.01B0] # LATIN SMALL LETTER U WITH HORN
+01AF      ; [.1454.0020.0008.01AF] # LATIN CAPITAL LETTER U WITH HORN
+0055 031B ; [.1454.0020.0008.01AF] # LATIN CAPITAL LETTER U WITH HORN
+1EEB      ; [.1454.0020.0002.01B0][.0000.0035.0002.0300] # LATIN SMALL LETTER U WITH HORN AND GRAVE
+1EEA      ; [.1454.0020.0008.01AF][.0000.0035.0002.0300] # LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+1EE9      ; [.1454.0020.0002.01B0][.0000.0038.0002.0301] # LATIN SMALL LETTER U WITH HORN AND ACUTE
+1EE8      ; [.1454.0020.0008.01AF][.0000.0038.0002.0301] # LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+1EEF      ; [.1454.0020.0002.01B0][.0000.0037.0002.0303] # LATIN SMALL LETTER U WITH HORN AND TILDE
+1EEE      ; [.1454.0020.0008.01AF][.0000.0037.0002.0303] # LATIN CAPITAL LETTER U WITH HORN AND TILDE
+1EEC      ; [.1454.0020.0008.01AF][.0000.0036.0002.0309] # LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+1EED      ; [.1454.0020.0002.01B0][.0000.0036.0002.0309] # LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+1EF0      ; [.1454.0020.0008.01AF][.0000.0039.0002.0323] # LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+1EF1      ; [.1454.0020.0002.01B0][.0000.0039.0002.0323] # LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+ENTRY
+};
index ac1fc77..4a04396 100644 (file)
@@ -1,4 +1,4 @@
-Unicode/Collate version 0.59
+Unicode/Collate version 0.60
 ===============================
 
 NAME
index 5b6c78d..cfe8995 100644 (file)
@@ -12,7 +12,7 @@ BEGIN {
 }
 
 use Test;
-BEGIN { plan tests => 65 };
+BEGIN { plan tests => 71 };
 
 use strict;
 use warnings;
@@ -341,6 +341,33 @@ $Collator->gsubst($str, "camel", sub { "<b>$_[0]</b>" });
 ok($str, "<b>Camel</b> donkey zebra <b>came\x{301}l</b> "
        . "<b>CAMEL</b> horse <b>cAm\0E\0L</b>...");
 
+# http://www.xray.mpe.mpg.de/mailing-lists/perl-unicode/2010-09/msg00014.html
+# when the substring includes an ignorable element like a space...
+
+$str = "Camel donkey zebra came\x{301}l CAMEL horse cAm\0E\0L...";
+$Collator->gsubst($str, "camel horse", sub { "<b>$_[0]</b>" });
+ok($str, "Camel donkey zebra came\x{301}l <b>CAMEL horse</b> cAm\0E\0L...");
+
+$str = "Camel donkey zebra camex{301}l CAMEL horse cAmEL-horse...";
+$Collator->gsubst($str, "camel horse", sub { "=$_[0]=" });
+ok($str, "Camel donkey zebra camex{301}l =CAMEL horse= =cAmEL-horse=...");
+
+$str = "Camel donkey zebra camex{301}l CAMEL horse cAmEL-horse...";
+$Collator->gsubst($str, "camel-horse", sub { "=$_[0]=" });
+ok($str, "Camel donkey zebra camex{301}l =CAMEL horse= =cAmEL-horse=...");
+
+$str = "Camel donkey zebra camex{301}l CAMEL horse cAmEL-horse...";
+$Collator->gsubst($str, "camelhorse", sub { "=$_[0]=" });
+ok($str, "Camel donkey zebra camex{301}l =CAMEL horse= =cAmEL-horse=...");
+
+$str = "Camel donkey zebra camex{301}l CAMEL horse cAmEL-horse...";
+$Collator->gsubst($str, "  ca  mel  hor  se  ", sub { "=$_[0]=" });
+ok($str, "Camel donkey zebra camex{301}l =CAMEL horse= =cAmEL-horse=...");
+
+$str = "Camel donkey zebra camex{301}l CAMEL horse cAmEL-horse...";
+$Collator->gsubst($str, "ca\x{300}melho\x{302}rse", sub { "=$_[0]=" });
+ok($str, "Camel donkey zebra camex{301}l =CAMEL horse= =cAmEL-horse=...");
+
 $Collator->change(level => 3);
 
 $str = "P\cBe\x{300}\cBrl and PERL.";
index bc4d982..13cc3be 100644 (file)
@@ -44,62 +44,62 @@ ok($objCy->gt("u", "th"));
 $objCy->change(level => 2);
 
 ok($objCy->eq("ch", "Ch"));
-ok($objCy->eq("CH", "Ch"));
+ok($objCy->eq("Ch", "CH"));
 ok($objCy->eq("dd", "Dd"));
-ok($objCy->eq("DD", "Dd"));
+ok($objCy->eq("Dd", "DD"));
 ok($objCy->eq("ff", "Ff"));
-ok($objCy->eq("FF", "Ff"));
+ok($objCy->eq("Ff", "FF"));
 ok($objCy->eq("ng", "Ng"));
-ok($objCy->eq("NG", "Ng"));
+ok($objCy->eq("Ng", "NG"));
 ok($objCy->eq("ll", "Ll"));
-ok($objCy->eq("LL", "Ll"));
+ok($objCy->eq("Ll", "LL"));
 ok($objCy->eq("ph", "Ph"));
-ok($objCy->eq("PH", "Ph"));
+ok($objCy->eq("Ph", "PH"));
 ok($objCy->eq("rh", "Rh"));
-ok($objCy->eq("RH", "Rh"));
+ok($objCy->eq("Rh", "RH"));
 ok($objCy->eq("th", "Th"));
-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("Ch", "CH"));
 ok($objCy->lt("dd", "Dd"));
-ok($objCy->gt("DD", "Dd"));
+ok($objCy->lt("Dd", "DD"));
 ok($objCy->lt("ff", "Ff"));
-ok($objCy->gt("FF", "Ff"));
+ok($objCy->lt("Ff", "FF"));
 ok($objCy->lt("ng", "Ng"));
-ok($objCy->gt("NG", "Ng"));
+ok($objCy->lt("Ng", "NG"));
 ok($objCy->lt("ll", "Ll"));
-ok($objCy->gt("LL", "Ll"));
+ok($objCy->lt("Ll", "LL"));
 ok($objCy->lt("ph", "Ph"));
-ok($objCy->gt("PH", "Ph"));
+ok($objCy->lt("Ph", "PH"));
 ok($objCy->lt("rh", "Rh"));
-ok($objCy->gt("RH", "Rh"));
+ok($objCy->lt("Rh", "RH"));
 ok($objCy->lt("th", "Th"));
-ok($objCy->gt("TH", "Th"));
+ok($objCy->lt("Th", "TH"));
 
 # 58
 
 $objCy->change(upper_before_lower => 1);
 
 ok($objCy->gt("ch", "Ch"));
-ok($objCy->lt("CH", "Ch"));
+ok($objCy->gt("Ch", "CH"));
 ok($objCy->gt("dd", "Dd"));
-ok($objCy->lt("DD", "Dd"));
+ok($objCy->gt("Dd", "DD"));
 ok($objCy->gt("ff", "Ff"));
-ok($objCy->lt("FF", "Ff"));
+ok($objCy->gt("Ff", "FF"));
 ok($objCy->gt("ng", "Ng"));
-ok($objCy->lt("NG", "Ng"));
+ok($objCy->gt("Ng", "NG"));
 ok($objCy->gt("ll", "Ll"));
-ok($objCy->lt("LL", "Ll"));
+ok($objCy->gt("Ll", "LL"));
 ok($objCy->gt("ph", "Ph"));
-ok($objCy->lt("PH", "Ph"));
+ok($objCy->gt("Ph", "PH"));
 ok($objCy->gt("rh", "Rh"));
-ok($objCy->lt("RH", "Rh"));
+ok($objCy->gt("Rh", "RH"));
 ok($objCy->gt("th", "Th"));
-ok($objCy->lt("TH", "Th"));
+ok($objCy->gt("Th", "TH"));
 
 # 74
index 09af185..aff6da7 100644 (file)
@@ -118,6 +118,23 @@ 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("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}"));
+ok($objDa->eq("o\x{338}", $ostk));
+ok($objDa->eq("O\x{338}", $Ostk));
+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));
+
+# 84
+
 ok($objDa->eq("u\x{308}\x{300}", "\x{1DC}"));
 ok($objDa->eq("U\x{308}\x{300}", "\x{1DB}"));
 ok($objDa->eq("u\x{308}\x{301}", "\x{1D8}"));
@@ -126,33 +143,16 @@ ok($objDa->eq("u\x{308}\x{304}", "\x{1D6}"));
 ok($objDa->eq("U\x{308}\x{304}", "\x{1D5}"));
 ok($objDa->eq("u\x{308}\x{30C}", "\x{1DA}"));
 ok($objDa->eq("U\x{308}\x{30C}", "\x{1D9}"));
-ok($objDa->eq("u\x{30B}", "\x{171}"));
-ok($objDa->eq("U\x{30B}", "\x{170}"));
-
-# 80
-
 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("a\x{308}\x{304}", "\x{1DF}"));
 ok($objDa->eq("A\x{308}\x{304}", "\x{1DE}"));
-ok($objDa->eq("e\x{328}", "\x{119}"));
-ok($objDa->eq("E\x{328}", "\x{118}"));
-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{308}\x{304}", "\x{22B}"));
 ok($objDa->eq("O\x{308}\x{304}", "\x{22A}"));
-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}"));
diff --git a/cpan/Unicode-Collate/t/loc_de.t b/cpan/Unicode-Collate/t/loc_de.t
new file mode 100644 (file)
index 0000000..066ea05
--- /dev/null
@@ -0,0 +1,51 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 20;
+
+my $auml = pack 'U', 0xE4;
+my $Auml = pack 'U', 0xC4;
+my $ouml = pack 'U', 0xF6;
+my $Ouml = pack 'U', 0xD6;
+my $uuml = pack 'U', 0xFC;
+my $Uuml = pack 'U', 0xDC;
+
+my $objDe = Unicode::Collate::Locale->
+    new(locale => 'DE', normalization => undef);
+
+ok(1);
+ok($objDe->getlocale, 'default');
+
+$objDe->change(level => 1);
+
+ok($objDe->lt("a\x{308}", "ae"));
+ok($objDe->lt("A\x{308}", "AE"));
+ok($objDe->lt("o\x{308}", "oe"));
+ok($objDe->lt("O\x{308}", "OE"));
+ok($objDe->lt("u\x{308}", "ue"));
+ok($objDe->lt("U\x{308}", "UE"));
+
+# 8
+
+ok($objDe->eq("a\x{308}", "a"));
+ok($objDe->eq("A\x{308}", "A"));
+ok($objDe->eq("o\x{308}", "o"));
+ok($objDe->eq("O\x{308}", "O"));
+ok($objDe->eq("u\x{308}", "u"));
+ok($objDe->eq("U\x{308}", "U"));
+
+# 14
+
+$objDe->change(level => 2);
+
+ok($objDe->gt("a\x{308}", "a"));
+ok($objDe->gt("A\x{308}", "A"));
+ok($objDe->gt("o\x{308}", "o"));
+ok($objDe->gt("O\x{308}", "O"));
+ok($objDe->gt("u\x{308}", "u"));
+ok($objDe->gt("U\x{308}", "U"));
+
+# 20
diff --git a/cpan/Unicode-Collate/t/loc_deph.t b/cpan/Unicode-Collate/t/loc_deph.t
new file mode 100644 (file)
index 0000000..44396cb
--- /dev/null
@@ -0,0 +1,87 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 40;
+
+my $auml = pack 'U', 0xE4;
+my $Auml = pack 'U', 0xC4;
+my $ouml = pack 'U', 0xF6;
+my $Ouml = pack 'U', 0xD6;
+my $uuml = pack 'U', 0xFC;
+my $Uuml = pack 'U', 0xDC;
+
+my $objDePhone = Unicode::Collate::Locale->
+    new(locale => 'DE-PHONE', normalization => undef);
+
+ok(1);
+ok($objDePhone->getlocale, 'de__phonebook');
+
+$objDePhone->change(level => 1);
+
+ok($objDePhone->eq("a\x{308}", "ae"));
+ok($objDePhone->eq("A\x{308}", "AE"));
+ok($objDePhone->eq("o\x{308}", "oe"));
+ok($objDePhone->eq("O\x{308}", "OE"));
+ok($objDePhone->eq("u\x{308}", "ue"));
+ok($objDePhone->eq("U\x{308}", "UE"));
+
+# 8
+
+$objDePhone->change(level => 2);
+
+ok($objDePhone->gt("a\x{308}", "ae"));
+ok($objDePhone->gt("A\x{308}", "AE"));
+ok($objDePhone->gt("o\x{308}", "oe"));
+ok($objDePhone->gt("O\x{308}", "OE"));
+ok($objDePhone->gt("u\x{308}", "ue"));
+ok($objDePhone->gt("U\x{308}", "UE"));
+
+ok($objDePhone->eq("a\x{308}", "A\x{308}"));
+ok($objDePhone->eq("o\x{308}", "O\x{308}"));
+ok($objDePhone->eq("u\x{308}", "U\x{308}"));
+
+# 17
+
+$objDePhone->change(level => 3);
+
+ok($objDePhone->lt("a\x{308}", "A\x{308}"));
+ok($objDePhone->lt("o\x{308}", "O\x{308}"));
+ok($objDePhone->lt("u\x{308}", "U\x{308}"));
+
+ok($objDePhone->eq("a\x{308}", $auml));
+ok($objDePhone->eq("A\x{308}", $Auml));
+ok($objDePhone->eq("o\x{308}", $ouml));
+ok($objDePhone->eq("O\x{308}", $Ouml));
+ok($objDePhone->eq("u\x{308}", $uuml));
+ok($objDePhone->eq("U\x{308}", $Uuml));
+
+# 26
+
+ok($objDePhone->eq("a\x{308}\x{304}", "\x{1DF}"));
+ok($objDePhone->eq("A\x{308}\x{304}", "\x{1DE}"));
+ok($objDePhone->eq("o\x{308}\x{304}", "\x{22B}"));
+ok($objDePhone->eq("O\x{308}\x{304}", "\x{22A}"));
+ok($objDePhone->eq("u\x{308}\x{300}", "\x{1DC}"));
+ok($objDePhone->eq("U\x{308}\x{300}", "\x{1DB}"));
+ok($objDePhone->eq("u\x{308}\x{301}", "\x{1D8}"));
+ok($objDePhone->eq("U\x{308}\x{301}", "\x{1D7}"));
+ok($objDePhone->eq("u\x{308}\x{304}", "\x{1D6}"));
+ok($objDePhone->eq("U\x{308}\x{304}", "\x{1D5}"));
+ok($objDePhone->eq("u\x{308}\x{30C}", "\x{1DA}"));
+ok($objDePhone->eq("U\x{308}\x{30C}", "\x{1D9}"));
+
+# 38
+
+my $objDePhoneBook = Unicode::Collate::Locale->
+    new(locale => 'de__phonebook', normalization => undef);
+
+ok($objDePhoneBook->getlocale, 'de__phonebook');
+
+$objDePhoneBook->change(level => 1);
+
+ok($objDePhoneBook->eq("a\x{308}", "ae"));
+
+# 40
index afd6707..c8be1fb 100644 (file)
@@ -95,6 +95,19 @@ ok($objFi->lt($ostk, $Ostk));
 
 ok($objFi->eq("u\x{308}", $uuml));
 ok($objFi->eq("U\x{308}", $Uuml));
+ok($objFi->eq("\x{1EF}", "\x{292}\x{30C}"));
+ok($objFi->eq("\x{1EE}", "\x{1B7}\x{30C}"));
+ok($objFi->eq("a\x{30A}", $arng));
+ok($objFi->eq("A\x{30A}", $Arng));
+ok($objFi->eq("a\x{308}", $auml));
+ok($objFi->eq("A\x{308}", $Auml));
+ok($objFi->eq("o\x{308}", $ouml));
+ok($objFi->eq("O\x{308}", $Ouml));
+ok($objFi->eq("o\x{338}", $ostk));
+ok($objFi->eq("O\x{338}", $Ostk));
+
+# 61
+
 ok($objFi->eq("u\x{308}\x{300}", "\x{1DC}"));
 ok($objFi->eq("U\x{308}\x{300}", "\x{1DB}"));
 ok($objFi->eq("u\x{308}\x{301}", "\x{1D8}"));
@@ -103,30 +116,17 @@ ok($objFi->eq("u\x{308}\x{304}", "\x{1D6}"));
 ok($objFi->eq("U\x{308}\x{304}", "\x{1D5}"));
 ok($objFi->eq("u\x{308}\x{30C}", "\x{1DA}"));
 ok($objFi->eq("U\x{308}\x{30C}", "\x{1D9}"));
-ok($objFi->eq("\x{1EF}", "\x{292}\x{30C}"));
-ok($objFi->eq("\x{1EE}", "\x{1B7}\x{30C}"));
-
-# 61
-
-ok($objFi->eq("a\x{30A}", $arng));
-ok($objFi->eq("A\x{30A}", $Arng));
 ok($objFi->eq("A\x{30A}", "\x{212B}"));
 ok($objFi->eq("a\x{30A}\x{301}", "\x{1FB}"));
 ok($objFi->eq("A\x{30A}\x{301}", "\x{1FA}"));
-ok($objFi->eq("a\x{308}", $auml));
-ok($objFi->eq("A\x{308}", $Auml));
 ok($objFi->eq("a\x{308}\x{304}", "\x{1DF}"));
 ok($objFi->eq("A\x{308}\x{304}", "\x{1DE}"));
 ok($objFi->eq("\x{1FD}", "$ae\x{301}"));
 ok($objFi->eq("\x{1FC}", "$AE\x{301}"));
 ok($objFi->eq("\x{1E3}", "$ae\x{304}"));
 ok($objFi->eq("\x{1E2}", "$AE\x{304}"));
-ok($objFi->eq("o\x{308}", $ouml));
-ok($objFi->eq("O\x{308}", $Ouml));
 ok($objFi->eq("o\x{308}\x{304}", "\x{22B}"));
 ok($objFi->eq("O\x{308}\x{304}", "\x{22A}"));
-ok($objFi->eq("o\x{338}", $ostk));
-ok($objFi->eq("O\x{338}", $Ostk));
 ok($objFi->eq("o\x{338}\x{301}", "\x{1FF}"));
 ok($objFi->eq("O\x{338}\x{301}", "\x{1FE}"));
 
index e072d6e..d476132 100644 (file)
@@ -118,6 +118,23 @@ 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("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}"));
+ok($objFo->eq("o\x{338}", $ostk));
+ok($objFo->eq("O\x{338}", $Ostk));
+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));
+
+# 84
+
 ok($objFo->eq("u\x{308}\x{300}", "\x{1DC}"));
 ok($objFo->eq("U\x{308}\x{300}", "\x{1DB}"));
 ok($objFo->eq("u\x{308}\x{301}", "\x{1D8}"));
@@ -126,33 +143,16 @@ ok($objFo->eq("u\x{308}\x{304}", "\x{1D6}"));
 ok($objFo->eq("U\x{308}\x{304}", "\x{1D5}"));
 ok($objFo->eq("u\x{308}\x{30C}", "\x{1DA}"));
 ok($objFo->eq("U\x{308}\x{30C}", "\x{1D9}"));
-ok($objFo->eq("u\x{30B}", "\x{171}"));
-ok($objFo->eq("U\x{30B}", "\x{170}"));
-
-# 80
-
 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("a\x{308}\x{304}", "\x{1DF}"));
 ok($objFo->eq("A\x{308}\x{304}", "\x{1DE}"));
-ok($objFo->eq("e\x{328}", "\x{119}"));
-ok($objFo->eq("E\x{328}", "\x{118}"));
-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{308}\x{304}", "\x{22B}"));
 ok($objFo->eq("O\x{308}\x{304}", "\x{22A}"));
-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}"));
index 025d3a8..3cc1c17 100644 (file)
@@ -4,7 +4,10 @@ use warnings;
 use Unicode::Collate::Locale;
 
 use Test;
-plan tests => 28;
+plan tests => 26;
+
+my $ae   = pack 'U', 0xE6;
+my $AE   = pack 'U', 0xC6;
 
 my $objFr = Unicode::Collate::Locale->
     new(locale => 'FR', normalization => undef);
@@ -14,39 +17,41 @@ ok($objFr->getlocale, 'fr');
 
 $objFr->change(level => 1);
 
-ok($objFr->eq("Æ", "AE"));
-ok($objFr->eq("æ", "ae"));
-ok($objFr->eq("\x{01FD}", "ae"));
-ok($objFr->eq("\x{01FC}", "AE"));
-ok($objFr->eq("\x{01E3}", "ae"));
-ok($objFr->eq("\x{01E2}", "AE"));
-ok($objFr->eq("\x{1D2D}", "AE"));
+ok($objFr->eq($ae, "ae"));
+ok($objFr->eq($AE, "AE"));
+ok($objFr->eq("\x{1FD}", $ae));
+ok($objFr->eq("\x{1FC}", $AE));
+ok($objFr->eq("\x{1E3}", $ae));
+ok($objFr->eq("\x{1E2}", $AE));
+
+# 8
 
 $objFr->change(level => 2);
 
-ok($objFr->gt("Æ", "AE"));
-ok($objFr->gt("æ", "ae"));
-ok($objFr->gt("\x{01FD}", "ae"));
-ok($objFr->gt("\x{01FC}", "AE"));
-ok($objFr->gt("\x{01E3}", "ae"));
-ok($objFr->gt("\x{01E2}", "AE"));
-ok($objFr->gt("\x{1D2D}", "AE"));
+ok($objFr->gt($ae, "ae"));
+ok($objFr->gt($AE, "AE"));
+ok($objFr->gt("\x{1FD}", $ae));
+ok($objFr->gt("\x{1FC}", $AE));
+ok($objFr->gt("\x{1E3}", $ae));
+ok($objFr->gt("\x{1E2}", $AE));
 
-ok($objFr->eq("Æ\x{304}", "\x{01E2}"));
-ok($objFr->eq("æ\x{304}", "\x{01E3}"));
-ok($objFr->eq("Æ\x{301}", "\x{01FC}"));
-ok($objFr->eq("æ\x{301}", "\x{01FD}"));
+ok($objFr->eq($ae, $AE));
+ok($objFr->eq($AE, "\x{1D2D}"));
+ok($objFr->eq("$ae\x{304}", "$AE\x{304}"));
+ok($objFr->eq("$ae\x{301}", "$AE\x{301}"));
 
-$objFr->change(level => 3);
+# 18
 
-ok($objFr->lt("æ\x{304}", "\x{01E2}"));
-ok($objFr->eq("Æ\x{304}", "\x{01E2}"));
-ok($objFr->eq("æ\x{304}", "\x{01E3}"));
-ok($objFr->gt("Æ\x{304}", "\x{01E3}"));
+$objFr->change(level => 3);
 
-ok($objFr->lt("æ\x{301}", "\x{01FC}"));
-ok($objFr->eq("Æ\x{301}", "\x{01FC}"));
-ok($objFr->eq("æ\x{301}", "\x{01FD}"));
-ok($objFr->gt("Æ\x{301}", "\x{01FD}"));
+ok($objFr->lt($ae, $AE));
+ok($objFr->lt($AE, "\x{1D2D}"));
+ok($objFr->lt("$ae\x{304}", "$AE\x{304}"));
+ok($objFr->lt("$ae\x{301}", "$AE\x{301}"));
 
+ok($objFr->eq("\x{1FD}", "$ae\x{301}"));
+ok($objFr->eq("\x{1FC}", "$AE\x{301}"));
+ok($objFr->eq("\x{1E3}", "$ae\x{304}"));
+ok($objFr->eq("\x{1E2}", "$AE\x{304}"));
 
+# 26
index 4e02ec8..6e490a3 100644 (file)
@@ -118,27 +118,27 @@ 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)));
+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("a\x{30A}", $arng));
+ok($objIs->eq("A\x{30A}", $Arng));
 
-# 71
+# 79
 
 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("a\x{308}\x{304}", "\x{1DF}"));
 ok($objIs->eq("A\x{308}\x{304}", "\x{1DE}"));
-ok($objIs->eq("o\x{308}", $ouml));
-ok($objIs->eq("O\x{308}", $Ouml));
 ok($objIs->eq("o\x{308}\x{304}", "\x{22B}"));
 ok($objIs->eq("O\x{308}\x{304}", "\x{22A}"));
-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}"));
index 0d0aa03..bc19f8e 100644 (file)
@@ -114,6 +114,23 @@ 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("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}"));
+ok($objKl->eq("o\x{338}", $ostk));
+ok($objKl->eq("O\x{338}", $Ostk));
+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));
+
+# 80
+
 ok($objKl->eq("u\x{308}\x{300}", "\x{1DC}"));
 ok($objKl->eq("U\x{308}\x{300}", "\x{1DB}"));
 ok($objKl->eq("u\x{308}\x{301}", "\x{1D8}"));
@@ -122,33 +139,16 @@ ok($objKl->eq("u\x{308}\x{304}", "\x{1D6}"));
 ok($objKl->eq("U\x{308}\x{304}", "\x{1D5}"));
 ok($objKl->eq("u\x{308}\x{30C}", "\x{1DA}"));
 ok($objKl->eq("U\x{308}\x{30C}", "\x{1D9}"));
-ok($objKl->eq("u\x{30B}", "\x{171}"));
-ok($objKl->eq("U\x{30B}", "\x{170}"));
-
-# 76
-
 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("a\x{308}\x{304}", "\x{1DF}"));
 ok($objKl->eq("A\x{308}\x{304}", "\x{1DE}"));
-ok($objKl->eq("e\x{328}", "\x{119}"));
-ok($objKl->eq("E\x{328}", "\x{118}"));
-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{308}\x{304}", "\x{22B}"));
 ok($objKl->eq("O\x{308}\x{304}", "\x{22A}"));
-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}"));
index 22191e3..d648a68 100644 (file)
@@ -110,6 +110,23 @@ ok($objNb->eq("d\x{335}", "\x{111}"));
 ok($objNb->eq("D\x{335}", "\x{110}"));
 ok($objNb->eq("u\x{308}", $uuml));
 ok($objNb->eq("U\x{308}", $Uuml));
+ok($objNb->eq("u\x{30B}", "\x{171}"));
+ok($objNb->eq("U\x{30B}", "\x{170}"));
+ok($objNb->eq("a\x{308}", $auml));
+ok($objNb->eq("A\x{308}", $Auml));
+ok($objNb->eq("e\x{328}", "\x{119}"));
+ok($objNb->eq("E\x{328}", "\x{118}"));
+ok($objNb->eq("o\x{338}", $ostk));
+ok($objNb->eq("O\x{338}", $Ostk));
+ok($objNb->eq("o\x{308}", $ouml));
+ok($objNb->eq("O\x{308}", $Ouml));
+ok($objNb->eq("o\x{30B}", "\x{151}"));
+ok($objNb->eq("O\x{30B}", "\x{150}"));
+ok($objNb->eq("a\x{30A}", $arng));
+ok($objNb->eq("A\x{30A}", $Arng));
+
+# 74
+
 ok($objNb->eq("u\x{308}\x{300}", "\x{1DC}"));
 ok($objNb->eq("U\x{308}\x{300}", "\x{1DB}"));
 ok($objNb->eq("u\x{308}\x{301}", "\x{1D8}"));
@@ -118,33 +135,16 @@ ok($objNb->eq("u\x{308}\x{304}", "\x{1D6}"));
 ok($objNb->eq("U\x{308}\x{304}", "\x{1D5}"));
 ok($objNb->eq("u\x{308}\x{30C}", "\x{1DA}"));
 ok($objNb->eq("U\x{308}\x{30C}", "\x{1D9}"));
-ok($objNb->eq("u\x{30B}", "\x{171}"));
-ok($objNb->eq("U\x{30B}", "\x{170}"));
-
-# 70
-
 ok($objNb->eq("\x{1FD}", "$ae\x{301}"));
 ok($objNb->eq("\x{1FC}", "$AE\x{301}"));
 ok($objNb->eq("\x{1E3}", "$ae\x{304}"));
 ok($objNb->eq("\x{1E2}", "$AE\x{304}"));
-ok($objNb->eq("a\x{308}", $auml));
-ok($objNb->eq("A\x{308}", $Auml));
 ok($objNb->eq("a\x{308}\x{304}", "\x{1DF}"));
 ok($objNb->eq("A\x{308}\x{304}", "\x{1DE}"));
-ok($objNb->eq("e\x{328}", "\x{119}"));
-ok($objNb->eq("E\x{328}", "\x{118}"));
-ok($objNb->eq("o\x{338}", $ostk));
-ok($objNb->eq("O\x{338}", $Ostk));
 ok($objNb->eq("o\x{338}\x{301}", "\x{1FF}"));
 ok($objNb->eq("O\x{338}\x{301}", "\x{1FE}"));
-ok($objNb->eq("o\x{308}", $ouml));
-ok($objNb->eq("O\x{308}", $Ouml));
 ok($objNb->eq("o\x{308}\x{304}", "\x{22B}"));
 ok($objNb->eq("O\x{308}\x{304}", "\x{22A}"));
-ok($objNb->eq("o\x{30B}", "\x{151}"));
-ok($objNb->eq("O\x{30B}", "\x{150}"));
-ok($objNb->eq("a\x{30A}", $arng));
-ok($objNb->eq("A\x{30A}", $Arng));
 ok($objNb->eq("A\x{30A}", "\x{212B}"));
 ok($objNb->eq("a\x{30A}\x{301}", "\x{1FB}"));
 ok($objNb->eq("A\x{30A}\x{301}", "\x{1FA}"));
index 9620209..fc6514a 100644 (file)
@@ -110,6 +110,23 @@ ok($objNn->eq("d\x{335}", "\x{111}"));
 ok($objNn->eq("D\x{335}", "\x{110}"));
 ok($objNn->eq("u\x{308}", $uuml));
 ok($objNn->eq("U\x{308}", $Uuml));
+ok($objNn->eq("u\x{30B}", "\x{171}"));
+ok($objNn->eq("U\x{30B}", "\x{170}"));
+ok($objNn->eq("a\x{308}", $auml));
+ok($objNn->eq("A\x{308}", $Auml));
+ok($objNn->eq("e\x{328}", "\x{119}"));
+ok($objNn->eq("E\x{328}", "\x{118}"));
+ok($objNn->eq("o\x{338}", $ostk));
+ok($objNn->eq("O\x{338}", $Ostk));
+ok($objNn->eq("o\x{308}", $ouml));
+ok($objNn->eq("O\x{308}", $Ouml));
+ok($objNn->eq("o\x{30B}", "\x{151}"));
+ok($objNn->eq("O\x{30B}", "\x{150}"));
+ok($objNn->eq("a\x{30A}", $arng));
+ok($objNn->eq("A\x{30A}", $Arng));
+
+# 74
+
 ok($objNn->eq("u\x{308}\x{300}", "\x{1DC}"));
 ok($objNn->eq("U\x{308}\x{300}", "\x{1DB}"));
 ok($objNn->eq("u\x{308}\x{301}", "\x{1D8}"));
@@ -118,33 +135,16 @@ ok($objNn->eq("u\x{308}\x{304}", "\x{1D6}"));
 ok($objNn->eq("U\x{308}\x{304}", "\x{1D5}"));
 ok($objNn->eq("u\x{308}\x{30C}", "\x{1DA}"));
 ok($objNn->eq("U\x{308}\x{30C}", "\x{1D9}"));
-ok($objNn->eq("u\x{30B}", "\x{171}"));
-ok($objNn->eq("U\x{30B}", "\x{170}"));
-
-# 70
-
 ok($objNn->eq("\x{1FD}", "$ae\x{301}"));
 ok($objNn->eq("\x{1FC}", "$AE\x{301}"));
 ok($objNn->eq("\x{1E3}", "$ae\x{304}"));
 ok($objNn->eq("\x{1E2}", "$AE\x{304}"));
-ok($objNn->eq("a\x{308}", $auml));
-ok($objNn->eq("A\x{308}", $Auml));
 ok($objNn->eq("a\x{308}\x{304}", "\x{1DF}"));
 ok($objNn->eq("A\x{308}\x{304}", "\x{1DE}"));
-ok($objNn->eq("e\x{328}", "\x{119}"));
-ok($objNn->eq("E\x{328}", "\x{118}"));
-ok($objNn->eq("o\x{338}", $ostk));
-ok($objNn->eq("O\x{338}", $Ostk));
 ok($objNn->eq("o\x{338}\x{301}", "\x{1FF}"));
 ok($objNn->eq("O\x{338}\x{301}", "\x{1FE}"));
-ok($objNn->eq("o\x{308}", $ouml));
-ok($objNn->eq("O\x{308}", $Ouml));
 ok($objNn->eq("o\x{308}\x{304}", "\x{22B}"));
 ok($objNn->eq("O\x{308}\x{304}", "\x{22A}"));
-ok($objNn->eq("o\x{30B}", "\x{151}"));
-ok($objNn->eq("O\x{30B}", "\x{150}"));
-ok($objNn->eq("a\x{30A}", $arng));
-ok($objNn->eq("A\x{30A}", $Arng));
 ok($objNn->eq("A\x{30A}", "\x{212B}"));
 ok($objNn->eq("a\x{30A}\x{301}", "\x{1FB}"));
 ok($objNn->eq("A\x{30A}\x{301}", "\x{1FA}"));
diff --git a/cpan/Unicode-Collate/t/loc_nso.t b/cpan/Unicode-Collate/t/loc_nso.t
new file mode 100644 (file)
index 0000000..e0fab02
--- /dev/null
@@ -0,0 +1,71 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 40;
+
+my $objNso = Unicode::Collate::Locale->
+    new(locale => 'NSO', normalization => undef);
+
+ok(1);
+ok($objNso->getlocale, 'nso');
+
+$objNso->change(level => 1);
+
+ok($objNso->lt("e", "e\x{302}"));
+ok($objNso->gt("f", "e\x{302}"));
+ok($objNso->lt("o", "o\x{302}"));
+ok($objNso->gt("p", "o\x{302}"));
+ok($objNso->lt("s", "s\x{30C}"));
+ok($objNso->gt("t", "s\x{30C}"));
+
+# 8
+
+$objNso->change(level => 2);
+
+ok($objNso->eq("e\x{302}", "E\x{302}"));
+ok($objNso->eq("o\x{302}", "O\x{302}"));
+ok($objNso->eq("s\x{30C}", "S\x{30C}"));
+
+$objNso->change(level => 3);
+
+ok($objNso->lt("e\x{302}", "E\x{302}"));
+ok($objNso->lt("o\x{302}", "O\x{302}"));
+ok($objNso->lt("s\x{30C}", "S\x{30C}"));
+
+# 14
+
+ok($objNso->eq("e\x{302}", pack('U', 0xEA)));
+ok($objNso->eq("E\x{302}", pack('U', 0xCA)));
+ok($objNso->eq("o\x{302}", pack('U', 0xF4)));
+ok($objNso->eq("O\x{302}", pack('U', 0xD4)));
+ok($objNso->eq("s\x{30C}", "\x{161}"));
+ok($objNso->eq("S\x{30C}", "\x{160}"));
+
+# 20
+
+ok($objNso->eq("e\x{302}\x{300}", "\x{1EC1}"));
+ok($objNso->eq("E\x{302}\x{300}", "\x{1EC0}"));
+ok($objNso->eq("e\x{302}\x{301}", "\x{1EBF}"));
+ok($objNso->eq("E\x{302}\x{301}", "\x{1EBE}"));
+ok($objNso->eq("e\x{302}\x{303}", "\x{1EC5}"));
+ok($objNso->eq("E\x{302}\x{303}", "\x{1EC4}"));
+ok($objNso->eq("e\x{302}\x{309}", "\x{1EC3}"));
+ok($objNso->eq("E\x{302}\x{309}", "\x{1EC2}"));
+ok($objNso->eq("e\x{302}\x{323}", "\x{1EC7}"));
+ok($objNso->eq("E\x{302}\x{323}", "\x{1EC6}"));
+
+ok($objNso->eq("o\x{302}\x{300}", "\x{1ED3}"));
+ok($objNso->eq("O\x{302}\x{300}", "\x{1ED2}"));
+ok($objNso->eq("o\x{302}\x{301}", "\x{1ED1}"));
+ok($objNso->eq("O\x{302}\x{301}", "\x{1ED0}"));
+ok($objNso->eq("o\x{302}\x{303}", "\x{1ED7}"));
+ok($objNso->eq("O\x{302}\x{303}", "\x{1ED6}"));
+ok($objNso->eq("o\x{302}\x{309}", "\x{1ED5}"));
+ok($objNso->eq("O\x{302}\x{309}", "\x{1ED4}"));
+ok($objNso->eq("o\x{302}\x{323}", "\x{1ED9}"));
+ok($objNso->eq("O\x{302}\x{323}", "\x{1ED8}"));
+
+# 40
diff --git a/cpan/Unicode-Collate/t/loc_om.t b/cpan/Unicode-Collate/t/loc_om.t
new file mode 100644 (file)
index 0000000..ed25934
--- /dev/null
@@ -0,0 +1,72 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 41;
+
+my $objOm = Unicode::Collate::Locale->
+    new(locale => 'OM', normalization => undef);
+
+ok(1);
+ok($objOm->getlocale, 'om');
+
+$objOm->change(level => 1);
+
+ok($objOm->lt("z",  "ch"));
+ok($objOm->lt("ch", "dh"));
+ok($objOm->lt("dh", "kh"));
+ok($objOm->lt("kh", "ny"));
+ok($objOm->lt("ny", "ph"));
+ok($objOm->lt("ph", "sh"));
+
+# 8
+
+$objOm->change(level => 2);
+
+ok($objOm->eq("ch", "Ch"));
+ok($objOm->eq("Ch", "CH"));
+ok($objOm->eq("dh", "Dh"));
+ok($objOm->eq("Dh", "DH"));
+ok($objOm->eq("kh", "Kh"));
+ok($objOm->eq("Kh", "KH"));
+ok($objOm->eq("ny", "Ny"));
+ok($objOm->eq("Ny", "NY"));
+ok($objOm->eq("ph", "Ph"));
+ok($objOm->eq("Ph", "PH"));
+ok($objOm->eq("sh", "Sh"));
+
+# 19
+
+$objOm->change(level => 3);
+
+ok($objOm->lt("ch", "Ch"));
+ok($objOm->lt("Ch", "CH"));
+ok($objOm->lt("dh", "Dh"));
+ok($objOm->lt("Dh", "DH"));
+ok($objOm->lt("kh", "Kh"));
+ok($objOm->lt("Kh", "KH"));
+ok($objOm->lt("ny", "Ny"));
+ok($objOm->lt("Ny", "NY"));
+ok($objOm->lt("ph", "Ph"));
+ok($objOm->lt("Ph", "PH"));
+ok($objOm->lt("sh", "Sh"));
+
+# 30
+
+$objOm->change(upper_before_lower => 1);
+
+ok($objOm->gt("ch", "Ch"));
+ok($objOm->gt("Ch", "CH"));
+ok($objOm->gt("dh", "Dh"));
+ok($objOm->gt("Dh", "DH"));
+ok($objOm->gt("kh", "Kh"));
+ok($objOm->gt("Kh", "KH"));
+ok($objOm->gt("ny", "Ny"));
+ok($objOm->gt("Ny", "NY"));
+ok($objOm->gt("ph", "Ph"));
+ok($objOm->gt("Ph", "PH"));
+ok($objOm->gt("sh", "Sh"));
+
+# 41
index 3305197..8fa9543 100644 (file)
@@ -4,7 +4,7 @@ use warnings;
 use Unicode::Collate::Locale;
 
 use Test;
-plan tests => 51;
+plan tests => 71;
 
 my $objRo = Unicode::Collate::Locale->
     new(locale => 'RO', normalization => undef);
@@ -52,7 +52,12 @@ ok($objRo->lt("s\x{327}", "S\x{327}"));
 ok($objRo->lt("t\x{327}", "T\x{327}"));
 ok($objRo->lt("z\x{307}", "Z\x{307}"));
 
-# 29
+ok($objRo->eq("s\x{327}", "s\x{326}"));
+ok($objRo->eq("S\x{327}", "S\x{326}"));
+ok($objRo->eq("t\x{327}", "t\x{326}"));
+ok($objRo->eq("T\x{327}", "T\x{326}"));
+
+# 33
 
 ok($objRo->eq("a\x{306}", "\x{103}"));
 ok($objRo->eq("A\x{306}", "\x{102}"));
@@ -73,11 +78,28 @@ ok($objRo->eq("T\x{326}", "\x{21A}"));
 ok($objRo->eq("z\x{307}", "\x{17C}"));
 ok($objRo->eq("Z\x{307}", "\x{17B}"));
 
-# 47
-
-ok($objRo->eq("s\x{327}", "s\x{326}"));
-ok($objRo->eq("S\x{327}", "S\x{326}"));
-ok($objRo->eq("t\x{327}", "t\x{326}"));
-ok($objRo->eq("T\x{327}", "T\x{326}"));
-
 # 51
+
+ok($objRo->eq("a\x{306}\x{300}", "\x{1EB1}"));
+ok($objRo->eq("A\x{306}\x{300}", "\x{1EB0}"));
+ok($objRo->eq("a\x{306}\x{301}", "\x{1EAF}"));
+ok($objRo->eq("A\x{306}\x{301}", "\x{1EAE}"));
+ok($objRo->eq("a\x{306}\x{303}", "\x{1EB5}"));
+ok($objRo->eq("A\x{306}\x{303}", "\x{1EB4}"));
+ok($objRo->eq("a\x{306}\x{309}", "\x{1EB3}"));
+ok($objRo->eq("A\x{306}\x{309}", "\x{1EB2}"));
+ok($objRo->eq("a\x{306}\x{323}", "\x{1EB7}"));
+ok($objRo->eq("A\x{306}\x{323}", "\x{1EB6}"));
+
+ok($objRo->eq("a\x{302}\x{300}", "\x{1EA7}"));
+ok($objRo->eq("A\x{302}\x{300}", "\x{1EA6}"));
+ok($objRo->eq("a\x{302}\x{301}", "\x{1EA5}"));
+ok($objRo->eq("A\x{302}\x{301}", "\x{1EA4}"));
+ok($objRo->eq("a\x{302}\x{303}", "\x{1EAB}"));
+ok($objRo->eq("A\x{302}\x{303}", "\x{1EAA}"));
+ok($objRo->eq("a\x{302}\x{309}", "\x{1EA9}"));
+ok($objRo->eq("A\x{302}\x{309}", "\x{1EA8}"));
+ok($objRo->eq("a\x{302}\x{323}", "\x{1EAD}"));
+ok($objRo->eq("A\x{302}\x{323}", "\x{1EAC}"));
+
+# 71
index 8a6a0df..9ed6f0a 100644 (file)
@@ -4,7 +4,7 @@ use warnings;
 use Unicode::Collate::Locale;
 
 use Test;
-plan tests => 42;
+plan tests => 52;
 
 my $objSk = Unicode::Collate::Locale->
     new(locale => 'SK', normalization => undef);
@@ -69,3 +69,16 @@ ok($objSk->eq("z\x{30C}", "\x{17E}"));
 ok($objSk->eq("Z\x{30C}", "\x{17D}"));
 
 # 42
+
+ok($objSk->eq("o\x{302}\x{300}", "\x{1ED3}"));
+ok($objSk->eq("O\x{302}\x{300}", "\x{1ED2}"));
+ok($objSk->eq("o\x{302}\x{301}", "\x{1ED1}"));
+ok($objSk->eq("O\x{302}\x{301}", "\x{1ED0}"));
+ok($objSk->eq("o\x{302}\x{303}", "\x{1ED7}"));
+ok($objSk->eq("O\x{302}\x{303}", "\x{1ED6}"));
+ok($objSk->eq("o\x{302}\x{309}", "\x{1ED5}"));
+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
index 7df5ea6..7266f5e 100644 (file)
@@ -4,7 +4,7 @@ use warnings;
 use Unicode::Collate::Locale;
 
 use Test;
-plan tests => 107;
+plan tests => 117;
 
 my $eth  = pack 'U', 0xF0;
 my $ETH  = pack 'U', 0xD0;
@@ -122,6 +122,25 @@ ok($objSv->eq("d\x{335}", "\x{111}"));
 ok($objSv->eq("D\x{335}", "\x{110}"));
 ok($objSv->eq("u\x{308}", $uuml));
 ok($objSv->eq("U\x{308}", $Uuml));
+ok($objSv->eq("u\x{30B}", "\x{171}"));
+ok($objSv->eq("U\x{30B}", "\x{170}"));
+ok($objSv->eq("a\x{30A}", $arng));
+ok($objSv->eq("A\x{30A}", $Arng));
+ok($objSv->eq("a\x{308}", $auml));
+ok($objSv->eq("A\x{308}", $Auml));
+ok($objSv->eq("e\x{328}", "\x{119}"));
+ok($objSv->eq("E\x{328}", "\x{118}"));
+ok($objSv->eq("o\x{308}", $ouml));
+ok($objSv->eq("O\x{308}", $Ouml));
+ok($objSv->eq("o\x{338}", $ostk));
+ok($objSv->eq("O\x{338}", $Ostk));
+ok($objSv->eq("o\x{30B}", "\x{151}"));
+ok($objSv->eq("O\x{30B}", "\x{150}"));
+ok($objSv->eq("o\x{302}", $ocrc));
+ok($objSv->eq("O\x{302}", $Ocrc));
+
+# 86
+
 ok($objSv->eq("u\x{308}\x{300}", "\x{1DC}"));
 ok($objSv->eq("U\x{308}\x{300}", "\x{1DB}"));
 ok($objSv->eq("u\x{308}\x{301}", "\x{1D8}"));
@@ -130,37 +149,31 @@ ok($objSv->eq("u\x{308}\x{304}", "\x{1D6}"));
 ok($objSv->eq("U\x{308}\x{304}", "\x{1D5}"));
 ok($objSv->eq("u\x{308}\x{30C}", "\x{1DA}"));
 ok($objSv->eq("U\x{308}\x{30C}", "\x{1D9}"));
-ok($objSv->eq("u\x{30B}", "\x{171}"));
-ok($objSv->eq("U\x{30B}", "\x{170}"));
-
-# 80
-
-ok($objSv->eq("a\x{30A}", $arng));
-ok($objSv->eq("A\x{30A}", $Arng));
 ok($objSv->eq("A\x{30A}", "\x{212B}"));
 ok($objSv->eq("a\x{30A}\x{301}", "\x{1FB}"));
 ok($objSv->eq("A\x{30A}\x{301}", "\x{1FA}"));
-ok($objSv->eq("a\x{308}", $auml));
-ok($objSv->eq("A\x{308}", $Auml));
 ok($objSv->eq("a\x{308}\x{304}", "\x{1DF}"));
 ok($objSv->eq("A\x{308}\x{304}", "\x{1DE}"));
 ok($objSv->eq("\x{1FD}", "$ae\x{301}"));
 ok($objSv->eq("\x{1FC}", "$AE\x{301}"));
 ok($objSv->eq("\x{1E3}", "$ae\x{304}"));
 ok($objSv->eq("\x{1E2}", "$AE\x{304}"));
-ok($objSv->eq("e\x{328}", "\x{119}"));
-ok($objSv->eq("E\x{328}", "\x{118}"));
-ok($objSv->eq("o\x{308}", $ouml));
-ok($objSv->eq("O\x{308}", $Ouml));
 ok($objSv->eq("o\x{308}\x{304}", "\x{22B}"));
 ok($objSv->eq("O\x{308}\x{304}", "\x{22A}"));
-ok($objSv->eq("o\x{338}", $ostk));
-ok($objSv->eq("O\x{338}", $Ostk));
 ok($objSv->eq("o\x{338}\x{301}", "\x{1FF}"));
 ok($objSv->eq("O\x{338}\x{301}", "\x{1FE}"));
-ok($objSv->eq("o\x{30B}", "\x{151}"));
-ok($objSv->eq("O\x{30B}", "\x{150}"));
-ok($objSv->eq("o\x{302}", $ocrc));
-ok($objSv->eq("O\x{302}", $Ocrc));
 
 # 107
+
+ok($objSv->eq("o\x{302}\x{300}", "\x{1ED3}"));
+ok($objSv->eq("O\x{302}\x{300}", "\x{1ED2}"));
+ok($objSv->eq("o\x{302}\x{301}", "\x{1ED1}"));
+ok($objSv->eq("O\x{302}\x{301}", "\x{1ED0}"));
+ok($objSv->eq("o\x{302}\x{303}", "\x{1ED7}"));
+ok($objSv->eq("O\x{302}\x{303}", "\x{1ED6}"));
+ok($objSv->eq("o\x{302}\x{309}", "\x{1ED5}"));
+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
index e019e1f..403d209 100644 (file)
@@ -42,62 +42,62 @@ ok($objSw->gt("u", "th"));
 $objSw->change(level => 2);
 
 ok($objSw->eq("ch", "Ch"));
-ok($objSw->eq("CH", "Ch"));
+ok($objSw->eq("Ch", "CH"));
 ok($objSw->eq("dh", "Dh"));
-ok($objSw->eq("DH", "Dh"));
+ok($objSw->eq("Dh", "DH"));
 ok($objSw->eq("gh", "Gh"));
-ok($objSw->eq("GH", "Gh"));
+ok($objSw->eq("Gh", "GH"));
 ok($objSw->eq("kh", "Kh"));
-ok($objSw->eq("KH", "Kh"));
+ok($objSw->eq("Kh", "KH"));
 ok($objSw->eq("ng'","Ng'"));
-ok($objSw->eq("NG'","Ng'"));
+ok($objSw->eq("Ng'","NG'"));
 ok($objSw->eq("ny", "Ny"));
-ok($objSw->eq("NY", "Ny"));
+ok($objSw->eq("Ny", "NY"));
 ok($objSw->eq("sh", "Sh"));
-ok($objSw->eq("SH", "Sh"));
+ok($objSw->eq("Sh", "SH"));
 ok($objSw->eq("th", "Th"));
-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("Ch", "CH"));
 ok($objSw->lt("dh", "Dh"));
-ok($objSw->gt("DH", "Dh"));
+ok($objSw->lt("Dh", "DH"));
 ok($objSw->lt("gh", "Gh"));
-ok($objSw->gt("GH", "Gh"));
+ok($objSw->lt("Gh", "GH"));
 ok($objSw->lt("kh", "Kh"));
-ok($objSw->gt("KH", "Kh"));
+ok($objSw->lt("Kh", "KH"));
 ok($objSw->lt("ng'","Ng'"));
-ok($objSw->gt("NG'","Ng'"));
+ok($objSw->lt("Ng'","NG'"));
 ok($objSw->lt("ny", "Ny"));
-ok($objSw->gt("NY", "Ny"));
+ok($objSw->lt("Ny", "NY"));
 ok($objSw->lt("sh", "Sh"));
-ok($objSw->gt("SH", "Sh"));
+ok($objSw->lt("Sh", "SH"));
 ok($objSw->lt("th", "Th"));
-ok($objSw->gt("TH", "Th"));
+ok($objSw->lt("Th", "TH"));
 
 # 56
 
 $objSw->change(upper_before_lower => 1);
 
 ok($objSw->gt("ch", "Ch"));
-ok($objSw->lt("CH", "Ch"));
+ok($objSw->gt("Ch", "CH"));
 ok($objSw->gt("dh", "Dh"));
-ok($objSw->lt("DH", "Dh"));
+ok($objSw->gt("Dh", "DH"));
 ok($objSw->gt("gh", "Gh"));
-ok($objSw->lt("GH", "Gh"));
+ok($objSw->gt("Gh", "GH"));
 ok($objSw->gt("kh", "Kh"));
-ok($objSw->lt("KH", "Kh"));
+ok($objSw->gt("Kh", "KH"));
 ok($objSw->gt("ng'","Ng'"));
-ok($objSw->lt("NG'","Ng'"));
+ok($objSw->gt("Ng'","NG'"));
 ok($objSw->gt("ny", "Ny"));
-ok($objSw->lt("NY", "Ny"));
+ok($objSw->gt("Ny", "NY"));
 ok($objSw->gt("sh", "Sh"));
-ok($objSw->lt("SH", "Sh"));
+ok($objSw->gt("Sh", "SH"));
 ok($objSw->gt("th", "Th"));
-ok($objSw->lt("TH", "Th"));
+ok($objSw->gt("Th", "TH"));
 
 # 72
diff --git a/cpan/Unicode-Collate/t/loc_tn.t b/cpan/Unicode-Collate/t/loc_tn.t
new file mode 100644 (file)
index 0000000..07e1f80
--- /dev/null
@@ -0,0 +1,71 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 40;
+
+my $objTn = Unicode::Collate::Locale->
+    new(locale => 'TN', normalization => undef);
+
+ok(1);
+ok($objTn->getlocale, 'tn');
+
+$objTn->change(level => 1);
+
+ok($objTn->lt("e", "e\x{302}"));
+ok($objTn->gt("f", "e\x{302}"));
+ok($objTn->lt("o", "o\x{302}"));
+ok($objTn->gt("p", "o\x{302}"));
+ok($objTn->lt("s", "s\x{30C}"));
+ok($objTn->gt("t", "s\x{30C}"));
+
+# 8
+
+$objTn->change(level => 2);
+
+ok($objTn->eq("e\x{302}", "E\x{302}"));
+ok($objTn->eq("o\x{302}", "O\x{302}"));
+ok($objTn->eq("s\x{30C}", "S\x{30C}"));
+
+$objTn->change(level => 3);
+
+ok($objTn->lt("e\x{302}", "E\x{302}"));
+ok($objTn->lt("o\x{302}", "O\x{302}"));
+ok($objTn->lt("s\x{30C}", "S\x{30C}"));
+
+# 14
+
+ok($objTn->eq("e\x{302}", pack('U', 0xEA)));
+ok($objTn->eq("E\x{302}", pack('U', 0xCA)));
+ok($objTn->eq("o\x{302}", pack('U', 0xF4)));
+ok($objTn->eq("O\x{302}", pack('U', 0xD4)));
+ok($objTn->eq("s\x{30C}", "\x{161}"));
+ok($objTn->eq("S\x{30C}", "\x{160}"));
+
+# 20
+
+ok($objTn->eq("e\x{302}\x{300}", "\x{1EC1}"));
+ok($objTn->eq("E\x{302}\x{300}", "\x{1EC0}"));
+ok($objTn->eq("e\x{302}\x{301}", "\x{1EBF}"));
+ok($objTn->eq("E\x{302}\x{301}", "\x{1EBE}"));
+ok($objTn->eq("e\x{302}\x{303}", "\x{1EC5}"));
+ok($objTn->eq("E\x{302}\x{303}", "\x{1EC4}"));
+ok($objTn->eq("e\x{302}\x{309}", "\x{1EC3}"));
+ok($objTn->eq("E\x{302}\x{309}", "\x{1EC2}"));
+ok($objTn->eq("e\x{302}\x{323}", "\x{1EC7}"));
+ok($objTn->eq("E\x{302}\x{323}", "\x{1EC6}"));
+
+ok($objTn->eq("o\x{302}\x{300}", "\x{1ED3}"));
+ok($objTn->eq("O\x{302}\x{300}", "\x{1ED2}"));
+ok($objTn->eq("o\x{302}\x{301}", "\x{1ED1}"));
+ok($objTn->eq("O\x{302}\x{301}", "\x{1ED0}"));
+ok($objTn->eq("o\x{302}\x{303}", "\x{1ED7}"));
+ok($objTn->eq("O\x{302}\x{303}", "\x{1ED6}"));
+ok($objTn->eq("o\x{302}\x{309}", "\x{1ED5}"));
+ok($objTn->eq("O\x{302}\x{309}", "\x{1ED4}"));
+ok($objTn->eq("o\x{302}\x{323}", "\x{1ED9}"));
+ok($objTn->eq("O\x{302}\x{323}", "\x{1ED8}"));
+
+# 40
diff --git a/cpan/Unicode-Collate/t/loc_vi.t b/cpan/Unicode-Collate/t/loc_vi.t
new file mode 100644 (file)
index 0000000..8af5154
--- /dev/null
@@ -0,0 +1,237 @@
+#!perl
+use strict;
+use warnings;
+use Unicode::Collate::Locale;
+
+use Test;
+plan tests => 194;
+
+my $objVi = Unicode::Collate::Locale->
+    new(locale => 'VI', normalization => undef);
+
+ok(1);
+ok($objVi->getlocale, 'vi');
+
+$objVi->change(level => 1);
+
+ok($objVi->lt("a", "a\x{306}"));
+ok($objVi->lt("a\x{306}", "a\x{302}"));
+ok($objVi->gt("b", "a\x{302}"));
+ok($objVi->lt("d", "d\x{335}"));
+ok($objVi->gt("e", "d\x{335}"));
+ok($objVi->lt("e", "e\x{302}"));
+ok($objVi->gt("f", "e\x{302}"));
+ok($objVi->lt("o", "o\x{302}"));
+ok($objVi->lt("o\x{302}", "o\x{31B}"));
+ok($objVi->gt("p", "o\x{31B}"));
+ok($objVi->lt("u", "u\x{31B}"));
+ok($objVi->gt("v", "u\x{31B}"));
+
+# 14
+
+ok($objVi->eq("\x{300}", "\x{309}"));
+ok($objVi->eq("\x{309}", "\x{303}"));
+ok($objVi->eq("\x{303}", "\x{301}"));
+ok($objVi->eq("\x{301}", "\x{323}"));
+ok($objVi->eq("\x{323}", "\x{306}"));
+ok($objVi->eq("\x{306}", "\x{302}"));
+
+ok($objVi->eq("X\x{300}", "X\x{309}"));
+ok($objVi->eq("X\x{309}", "X\x{303}"));
+ok($objVi->eq("X\x{303}", "X\x{301}"));
+ok($objVi->eq("X\x{301}", "X\x{323}"));
+ok($objVi->eq("X\x{323}", "X\x{306}"));
+ok($objVi->eq("X\x{306}", "X\x{302}"));
+
+# 26
+
+$objVi->change(level => 2);
+
+ok($objVi->lt("\x{300}", "\x{309}"));
+ok($objVi->lt("\x{309}", "\x{303}"));
+ok($objVi->lt("\x{303}", "\x{301}"));
+ok($objVi->lt("\x{301}", "\x{323}"));
+ok($objVi->lt("\x{323}", "\x{306}"));
+ok($objVi->lt("\x{306}", "\x{302}"));
+
+ok($objVi->lt("X\x{300}", "X\x{309}"));
+ok($objVi->lt("X\x{309}", "X\x{303}"));
+ok($objVi->lt("X\x{303}", "X\x{301}"));
+ok($objVi->lt("X\x{301}", "X\x{323}"));
+ok($objVi->lt("X\x{323}", "X\x{306}"));
+ok($objVi->lt("X\x{306}", "X\x{302}"));
+
+# 38
+
+ok($objVi->eq("a\x{306}", "A\x{306}"));
+ok($objVi->eq("a\x{302}", "A\x{302}"));
+ok($objVi->eq("d\x{335}", "D\x{335}"));
+ok($objVi->eq("e\x{302}", "E\x{302}"));
+ok($objVi->eq("o\x{302}", "O\x{302}"));
+ok($objVi->eq("o\x{31B}", "O\x{31B}"));
+ok($objVi->eq("u\x{31B}", "U\x{31B}"));
+
+# 45
+
+$objVi->change(level => 3);
+
+ok($objVi->lt("a\x{306}", "A\x{306}"));
+ok($objVi->lt("a\x{302}", "A\x{302}"));
+ok($objVi->lt("d\x{335}", "D\x{335}"));
+ok($objVi->lt("e\x{302}", "E\x{302}"));
+ok($objVi->lt("o\x{302}", "O\x{302}"));
+ok($objVi->lt("o\x{31B}", "O\x{31B}"));
+ok($objVi->lt("u\x{31B}", "U\x{31B}"));
+
+# 52
+
+ok($objVi->eq("a\x{306}", "\x{103}"));
+ok($objVi->eq("A\x{306}", "\x{102}"));
+ok($objVi->eq("a\x{302}", pack('U', 0xE2)));
+ok($objVi->eq("A\x{302}", pack('U', 0xC2)));
+ok($objVi->eq("d\x{335}", "\x{111}"));
+ok($objVi->eq("D\x{335}", "\x{110}"));
+ok($objVi->eq("e\x{302}", pack('U', 0xEA)));
+ok($objVi->eq("E\x{302}", pack('U', 0xCA)));
+ok($objVi->eq("o\x{302}", pack('U', 0xF4)));
+ok($objVi->eq("O\x{302}", pack('U', 0xD4)));
+ok($objVi->eq("o\x{31B}", "\x{1A1}"));
+ok($objVi->eq("O\x{31B}", "\x{1A0}"));
+ok($objVi->eq("u\x{31B}", "\x{1B0}"));
+ok($objVi->eq("U\x{31B}", "\x{1AF}"));
+
+# 66
+
+ok($objVi->eq("a\x{300}", pack('U', 0xE0)));
+ok($objVi->eq("a\x{309}", "\x{1EA3}"));
+ok($objVi->eq("a\x{303}", pack('U', 0xE3)));
+ok($objVi->eq("a\x{301}", pack('U', 0xE1)));
+ok($objVi->eq("a\x{323}", "\x{1EA1}"));
+ok($objVi->eq("A\x{300}", pack('U', 0xC0)));
+ok($objVi->eq("A\x{309}", "\x{1EA2}"));
+ok($objVi->eq("A\x{303}", pack('U', 0xC3)));
+ok($objVi->eq("A\x{301}", pack('U', 0xC1)));
+ok($objVi->eq("A\x{323}", "\x{1EA0}"));
+ok($objVi->eq("a\x{306}\x{300}", "\x{1EB1}"));
+ok($objVi->eq("a\x{306}\x{309}", "\x{1EB3}"));
+ok($objVi->eq("a\x{306}\x{303}", "\x{1EB5}"));
+ok($objVi->eq("a\x{306}\x{301}", "\x{1EAF}"));
+ok($objVi->eq("a\x{306}\x{323}", "\x{1EB7}"));
+ok($objVi->eq("A\x{306}\x{300}", "\x{1EB0}"));
+ok($objVi->eq("A\x{306}\x{309}", "\x{1EB2}"));
+ok($objVi->eq("A\x{306}\x{303}", "\x{1EB4}"));
+ok($objVi->eq("A\x{306}\x{301}", "\x{1EAE}"));
+ok($objVi->eq("A\x{306}\x{323}", "\x{1EB6}"));
+ok($objVi->eq("a\x{302}\x{300}", "\x{1EA7}"));
+ok($objVi->eq("a\x{302}\x{309}", "\x{1EA9}"));
+ok($objVi->eq("a\x{302}\x{303}", "\x{1EAB}"));
+ok($objVi->eq("a\x{302}\x{301}", "\x{1EA5}"));
+ok($objVi->eq("a\x{302}\x{323}", "\x{1EAD}"));
+ok($objVi->eq("A\x{302}\x{300}", "\x{1EA6}"));
+ok($objVi->eq("A\x{302}\x{309}", "\x{1EA8}"));
+ok($objVi->eq("A\x{302}\x{303}", "\x{1EAA}"));
+ok($objVi->eq("A\x{302}\x{301}", "\x{1EA4}"));
+ok($objVi->eq("A\x{302}\x{323}", "\x{1EAC}"));
+ok($objVi->eq("e\x{300}", pack('U', 0xE8)));
+ok($objVi->eq("e\x{309}", "\x{1EBB}"));
+ok($objVi->eq("e\x{303}", "\x{1EBD}"));
+ok($objVi->eq("e\x{301}", pack('U', 0xE9)));
+ok($objVi->eq("e\x{323}", "\x{1EB9}"));
+ok($objVi->eq("E\x{300}", pack('U', 0xC8)));
+ok($objVi->eq("E\x{309}", "\x{1EBA}"));
+ok($objVi->eq("E\x{303}", "\x{1EBC}"));
+ok($objVi->eq("E\x{301}", pack('U', 0xC9)));
+ok($objVi->eq("E\x{323}", "\x{1EB8}"));
+ok($objVi->eq("e\x{302}\x{300}", "\x{1EC1}"));
+ok($objVi->eq("e\x{302}\x{309}", "\x{1EC3}"));
+ok($objVi->eq("e\x{302}\x{303}", "\x{1EC5}"));
+ok($objVi->eq("e\x{302}\x{301}", "\x{1EBF}"));
+ok($objVi->eq("e\x{302}\x{323}", "\x{1EC7}"));
+ok($objVi->eq("E\x{302}\x{300}", "\x{1EC0}"));
+ok($objVi->eq("E\x{302}\x{309}", "\x{1EC2}"));
+ok($objVi->eq("E\x{302}\x{303}", "\x{1EC4}"));
+ok($objVi->eq("E\x{302}\x{301}", "\x{1EBE}"));
+ok($objVi->eq("E\x{302}\x{323}", "\x{1EC6}"));
+ok($objVi->eq("i\x{300}", pack('U', 0xEC)));
+ok($objVi->eq("i\x{309}", "\x{1EC9}"));
+ok($objVi->eq("i\x{303}", "\x{129}"));
+ok($objVi->eq("i\x{301}", pack('U', 0xED)));
+ok($objVi->eq("i\x{323}", "\x{1ECB}"));
+ok($objVi->eq("I\x{300}", pack('U', 0xCC)));
+ok($objVi->eq("I\x{309}", "\x{1EC8}"));
+ok($objVi->eq("I\x{303}", "\x{128}"));
+ok($objVi->eq("I\x{301}", pack('U', 0xCD)));
+ok($objVi->eq("I\x{323}", "\x{1ECA}"));
+ok($objVi->eq("o\x{300}", pack('U', 0xF2)));
+ok($objVi->eq("o\x{309}", "\x{1ECF}"));
+ok($objVi->eq("o\x{303}", pack('U', 0xF5)));
+ok($objVi->eq("o\x{301}", pack('U', 0xF3)));
+ok($objVi->eq("o\x{323}", "\x{1ECD}"));
+ok($objVi->eq("O\x{300}", pack('U', 0xD2)));
+ok($objVi->eq("O\x{309}", "\x{1ECE}"));
+ok($objVi->eq("O\x{303}", pack('U', 0xD5)));
+ok($objVi->eq("O\x{301}", pack('U', 0xD3)));
+ok($objVi->eq("O\x{323}", "\x{1ECC}"));
+ok($objVi->eq("o\x{302}\x{300}", "\x{1ED3}"));
+ok($objVi->eq("o\x{302}\x{309}", "\x{1ED5}"));
+ok($objVi->eq("o\x{302}\x{303}", "\x{1ED7}"));
+ok($objVi->eq("o\x{302}\x{301}", "\x{1ED1}"));
+ok($objVi->eq("o\x{302}\x{323}", "\x{1ED9}"));
+ok($objVi->eq("O\x{302}\x{300}", "\x{1ED2}"));
+ok($objVi->eq("O\x{302}\x{309}", "\x{1ED4}"));
+ok($objVi->eq("O\x{302}\x{303}", "\x{1ED6}"));
+ok($objVi->eq("O\x{302}\x{301}", "\x{1ED0}"));
+ok($objVi->eq("O\x{302}\x{323}", "\x{1ED8}"));
+ok($objVi->eq("o\x{31B}\x{300}", "\x{1EDD}"));
+ok($objVi->eq("o\x{31B}\x{309}", "\x{1EDF}"));
+ok($objVi->eq("o\x{31B}\x{303}", "\x{1EE1}"));
+ok($objVi->eq("o\x{31B}\x{301}", "\x{1EDB}"));
+ok($objVi->eq("o\x{31B}\x{323}", "\x{1EE3}"));
+ok($objVi->eq("O\x{31B}\x{300}", "\x{1EDC}"));
+ok($objVi->eq("O\x{31B}\x{309}", "\x{1EDE}"));
+ok($objVi->eq("O\x{31B}\x{303}", "\x{1EE0}"));
+ok($objVi->eq("O\x{31B}\x{301}", "\x{1EDA}"));
+ok($objVi->eq("O\x{31B}\x{323}", "\x{1EE2}"));
+ok($objVi->eq("u\x{300}", pack('U', 0xF9)));
+ok($objVi->eq("u\x{309}", "\x{1EE7}"));
+ok($objVi->eq("u\x{303}", "\x{169}"));
+ok($objVi->eq("u\x{301}", pack('U', 0xFA)));
+ok($objVi->eq("u\x{323}", "\x{1EE5}"));
+ok($objVi->eq("U\x{300}", pack('U', 0xD9)));
+ok($objVi->eq("U\x{309}", "\x{1EE6}"));
+ok($objVi->eq("U\x{303}", "\x{168}"));
+ok($objVi->eq("U\x{301}", pack('U', 0xDA)));
+ok($objVi->eq("U\x{323}", "\x{1EE4}"));
+ok($objVi->eq("u\x{31B}\x{300}", "\x{1EEB}"));
+ok($objVi->eq("u\x{31B}\x{309}", "\x{1EED}"));
+ok($objVi->eq("u\x{31B}\x{303}", "\x{1EEF}"));
+ok($objVi->eq("u\x{31B}\x{301}", "\x{1EE9}"));
+ok($objVi->eq("u\x{31B}\x{323}", "\x{1EF1}"));
+ok($objVi->eq("U\x{31B}\x{300}", "\x{1EEA}"));
+ok($objVi->eq("U\x{31B}\x{309}", "\x{1EEC}"));
+ok($objVi->eq("U\x{31B}\x{303}", "\x{1EEE}"));
+ok($objVi->eq("U\x{31B}\x{301}", "\x{1EE8}"));
+ok($objVi->eq("U\x{31B}\x{323}", "\x{1EF0}"));
+ok($objVi->eq("y\x{300}", "\x{1EF3}"));
+ok($objVi->eq("y\x{309}", "\x{1EF7}"));
+ok($objVi->eq("y\x{303}", "\x{1EF9}"));
+ok($objVi->eq("y\x{301}", pack('U', 0xFD)));
+ok($objVi->eq("y\x{323}", "\x{1EF5}"));
+ok($objVi->eq("Y\x{300}", "\x{1EF2}"));
+ok($objVi->eq("Y\x{309}", "\x{1EF6}"));
+ok($objVi->eq("Y\x{303}", "\x{1EF8}"));
+ok($objVi->eq("Y\x{301}", pack('U', 0xDD)));
+ok($objVi->eq("Y\x{323}", "\x{1EF4}"));
+
+# 186
+
+ok($objVi->eq("e\x{306}", "\x{115}"));
+ok($objVi->eq("E\x{306}", "\x{114}"));
+ok($objVi->eq("i\x{306}", "\x{12D}"));
+ok($objVi->eq("I\x{306}", "\x{12C}"));
+ok($objVi->eq("o\x{306}", "\x{14F}"));
+ok($objVi->eq("O\x{306}", "\x{14E}"));
+ok($objVi->eq("u\x{306}", "\x{16D}"));
+ok($objVi->eq("U\x{306}", "\x{16C}"));
+
+# 194
index 1d26095..5bb3706 100644 (file)
@@ -151,6 +151,10 @@ C<PathTools> has been upgraded from version 3.31_01 to 3.33.
 
 =item *
 
+C<Unicode::Collate> has been upgraded from version 0.59 to 0.60
+
+=item *
+
 C<Unicode::Normalize> has been upgraded from version 1.06 to 1.07
 
 =back