Bug 14759: Replace Text::Unaccent with Unicode::Normalize
authorMartin Renvoize <martin.renvoize@ptfs-europe.com>
Wed, 8 Jan 2020 09:13:18 +0000 (09:13 +0000)
committerMartin Renvoize <martin.renvoize@ptfs-europe.com>
Fri, 10 Jan 2020 10:44:35 +0000 (10:44 +0000)
As shown in the comments on the bug, it appears that Unicode::Normalize
is the most reliable way to strip accents from strings for this use
case.

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>

C4/Installer/PerlDependencies.pm
Koha/Patron.pm

index d553961..84f5fe4 100644 (file)
@@ -627,11 +627,6 @@ our $PERL_DEPS = {
         required   => 0,
         min_ver    => '0.40'
     },
-    'Text::Unaccent' => {
-        'usage'    => 'Core',
-        'required' => '1',
-        'min_ver'  => '1.08',
-    },
     'Test::WWW::Mechanize' => {
         'usage'    => 'Testing suite',
         'required' => '0',
index a3ebfc9..f48e67a 100644 (file)
@@ -23,7 +23,7 @@ use Modern::Perl;
 use Carp;
 use List::MoreUtils qw( any uniq );
 use JSON qw( to_json );
-use Text::Unaccent qw( unac_string );
+use Unicode::Normalize;
 
 use C4::Context;
 use C4::Log;
@@ -1419,14 +1419,14 @@ sub generate_userid {
       $firstname =~ s/[[:digit:][:space:][:blank:][:punct:][:cntrl:]]//g;
       $surname =~ s/[[:digit:][:space:][:blank:][:punct:][:cntrl:]]//g;
       my $userid = lc(($firstname)? "$firstname.$surname" : $surname);
-      $userid = unac_string('utf-8',$userid);
+      $userid = NFKD( $userid );
+      $userid =~ s/\p{NonspacingMark}//g;
       $userid .= $offset unless $offset == 0;
       $self->userid( $userid );
       $offset++;
      } while (! $self->has_valid_userid );
 
      return $self;
-
 }
 
 =head3 attributes