From b1e4acac3c7451044c28d02d05881040adee0592 Mon Sep 17 00:00:00 2001 From: Marcel de Rooy Date: Mon, 28 Aug 2017 13:14:08 +0200 Subject: [PATCH] Bug 11046: Add the form YYY-? for uncertain years 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 TransformMarcToKoha tests passed. Also this patch passed QA test tool Signed-off-by: Alex Buckley Signed-off-by: Josef Moravec Signed-off-by: Jonathan Druart --- C4/Biblio.pm | 4 ++++ t/db_dependent/Biblio/TransformMarcToKoha.t | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/C4/Biblio.pm b/C4/Biblio.pm index d4e007de45..b910f40d1f 100644 --- a/C4/Biblio.pm +++ b/C4/Biblio.pm @@ -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; } diff --git a/t/db_dependent/Biblio/TransformMarcToKoha.t b/t/db_dependent/Biblio/TransformMarcToKoha.t index 3a47c569d9..b9c02a8cc9 100644 --- a/t/db_dependent/Biblio/TransformMarcToKoha.t +++ b/t/db_dependent/Biblio/TransformMarcToKoha.t @@ -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 -- 2.39.5