Bug 11046: Add the form YYY-? for uncertain years
authorMarcel de Rooy <m.de.rooy@rijksmuseum.nl>
Mon, 28 Aug 2017 11:14:08 +0000 (13:14 +0200)
committerJonathan Druart <jonathan.druart@bugs.koha-community.org>
Tue, 9 Jan 2018 20:24:17 +0000 (17:24 -0300)
This form occurred in Dutch ISBD rules.
The question mark should follow the hyphen(s).

Test plan:
Run t/db_dependent/Biblio/TransformMarcToKoha.t

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>
TransformMarcToKoha tests passed. Also this patch passed QA test tool

Signed-off-by: Alex Buckley <alexbuckley@catalyst.net.nz>
Signed-off-by: Josef Moravec <josef.moravec@gmail.com>
Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
C4/Biblio.pm
t/db_dependent/Biblio/TransformMarcToKoha.t

index d4e007d..b910f40 100644 (file)
@@ -2703,6 +2703,10 @@ sub _adjust_pubyear {
     } elsif( $retval =~ m/(\d)[.Xx?]{3}|(\d\d)[.Xx?]{2}|(\d{3})[.Xx?]/ ) {
         my $digits = $1 || $2 || $3;
         $retval = $digits * ( 10 ** ( 4 - length($digits) ));
+    } elsif( $retval =~ m/(\d)[-]{3}\?|(\d\d)[-]{2}\?|(\d{3})[-]\?/ ) {
+        # the form 198-? occurred in Dutch ISBD rules
+        my $digits = $1 || $2 || $3;
+        $retval = $digits * ( 10 ** ( 4 - length($digits) ));
     }
     return $retval;
 }
index 3a47c56..b9c02a8 100644 (file)
@@ -94,7 +94,7 @@ subtest 'Multiple mappings for one kohafield' => sub {
 };
 
 subtest 'Testing _adjust_pubyear' => sub {
-    plan tests => 8;
+    plan tests => 10;
 
     is( C4::Biblio::_adjust_pubyear('2004 c2000 2007'), 2000, 'First cYEAR' );
     is( C4::Biblio::_adjust_pubyear('2004 2000 2007'), 2004, 'First year' );
@@ -104,6 +104,8 @@ subtest 'Testing _adjust_pubyear' => sub {
     is( C4::Biblio::_adjust_pubyear('1...'), 1000, '1... on its own' );
     is( C4::Biblio::_adjust_pubyear('12?? 13xx'), 1200, '12?? first' );
     is( C4::Biblio::_adjust_pubyear('12? 1x'), '12? 1x', 'Too short' );
+    is( C4::Biblio::_adjust_pubyear('198-'), '198-', 'Missing question mark' );
+    is( C4::Biblio::_adjust_pubyear('198-?'), '1980', '198-?' );
 };
 
 # Cleanup