bug 3614 Fix incorrect setting of indicator

Pull the code into its own subr so that the dangers of
inaccurate copy & paste are avoided in future

Signed-off-by: Galen Charlton <gmcharlt@gmail.com>
This commit is contained in:
Colin Campbell 2009-09-14 19:26:47 +01:00 committed by Galen Charlton
parent 8b296fc778
commit dab68f884f
1 changed files with 19 additions and 8 deletions

View File

@ -1707,10 +1707,8 @@ sub TransformHtmlToXml {
$first = 1;
}
else {
my $ind1 = substr( @$indicator[$j], 0, 1 );
my $ind2 = substr( @$indicator[$j], 1, 1 );
$ind1 = " " if !defined($ind2) or $ind2 eq "";
$ind2 = " " if !defined($ind2) or $ind2 eq "";
my $ind1 = default_ind_to_space( substr( @$indicator[$j], 0, 1 ) );
my $ind2 = default_ind_to_space( substr( @$indicator[$j], 1, 1 ) );
$xml .= "<datafield tag=\"@$tags[$i]\" ind1=\"$ind1\" ind2=\"$ind2\">\n";
$xml .= "<subfield code=\"@$subfields[$i]\">@$values[$i]</subfield>\n";
$first = 0;
@ -1723,10 +1721,8 @@ sub TransformHtmlToXml {
}
else {
if ($first) {
my $ind1 = substr( @$indicator[$j], 0, 1 );
my $ind2 = substr( @$indicator[$j], 1, 1 );
$ind1 = " " if !defined($ind2) or $ind2 eq "";
$ind2 = " " if !defined($ind2) or $ind2 eq "";
my $ind1 = default_ind_to_space( substr( @$indicator[$j], 0, 1 ) );
my $ind2 = default_ind_to_space( substr( @$indicator[$j], 1, 1 ) );
$xml .= "<datafield tag=\"@$tags[$i]\" ind1=\"$ind1\" ind2=\"$ind2\">\n";
$first = 0;
}
@ -1753,6 +1749,21 @@ sub TransformHtmlToXml {
return $xml;
}
=head2 default_ind_to_space
Passed what should be an indicator returns a space
if its undefined or zero length
=cut
sub default_ind_to_space {
my $s = shift;
if (!defined $s || $s eq q{} ) {
return ' ';
}
return $s;
}
=head2 TransformHtmlToMarc
L<$record> = TransformHtmlToMarc(L<$params>,L<$cgi>)