MARC-Field008-Print

 view release on metacpan or  search on metacpan

Print.pm  view on Meta::CPAN

		push @ret, $self->_key('Government publication').
			$self->_print($material, 'government_publication');
		push @ret, $self->_key('Form of item').
			$self->_print($material, 'form_of_item');
		push @ret, $self->_key('Type of visual material').
			$self->_print($material, 'type_of_visual_material', 'visual_material');
		push @ret, $self->_key('Technique').
			$self->_print($material, 'technique', 'visual_material');
	}
	# TODO Translate?
	push @ret, $self->_key('Language').$field008_obj->language;
	push @ret, $self->_key('Modified record').
		$self->_print($field008_obj, 'modified_record');
	push @ret, $self->_key('Cataloging source').
		$self->_print($field008_obj, 'cataloging_source');

	return wantarray ? @ret : (join $self->{'output_separator'}, @ret);
}

sub _key {
	my ($self, $key) = @_;

	my $ret;
	my $value = $self->{'_l'}->maketext($key);
	if ($self->{'mode_ansi'}) {
		$ret = Term::ANSIColor::color('cyan').$value.Term::ANSIColor::color('reset');
	} else {
		$ret = $value;
	}
	$ret .= ': ';

	return $ret;
}

sub _print {
	my ($self, $obj, $method_name, $prefix, $lang_key) = @_;

	my $ret_value = $obj->$method_name;
	my $ret;
	if ($self->{'mode_desc'}) {
		if (! defined $lang_key) {
			my $ret_value_fixed = $ret_value;
			$ret_value_fixed =~ s/\ /_/msg;
			$lang_key = $method_name.'.'.$ret_value_fixed;
			if (defined $prefix) {
				$lang_key = $prefix.'.'.$lang_key;
			}
		}
		$ret = $self->{'_l'}->maketext($lang_key);
	} else {
		$ret = $ret_value;
	}

	return $ret;
}

sub _print_multi {
	my ($self, $obj, $method_name, $prefix) = @_;

	my $ret_value = $obj->$method_name;
	my @ret_values = split m//ms, $ret_value;
	my @ret;
	my $not_coded = 0;
	foreach my $process_ret_value (@ret_values) {
		if ($process_ret_value eq ' ') {
			next;
		}
		if ($process_ret_value eq '|') {
			if (! $not_coded) {
				$not_coded = 1;
			} else {
				next;
			}
		}
		if ($self->{'mode_desc'}) {
			my $ret_value_fixed = $process_ret_value;
			$ret_value_fixed =~ s/\ /_/msg;
			my $lang_key = $method_name.'.'.$ret_value_fixed;
			if (defined $prefix) {
				$lang_key = $prefix.'.'.$lang_key;
			}
			push @ret, $self->{'_l'}->maketext($lang_key);
		} else {
			push @ret, $process_ret_value;
		}
	}

	return wantarray ? @ret : (join ', ', @ret);
}

1;

__END__

=pod

=encoding utf8

=head1 NAME

MARC::Field008::Print - MARC 008 field class for print.

=head1 SYNOPSIS

 use MARC::Field008::Print;

 my $obj = MARC::Field008::Print->new(%params);
 my @ret = $obj->print($field008_obj);
 my $ret = $obj->print($field008_obj);

=head1 METHODS

=head2 C<new>

 my $obj = MARC::Field008::Print->new(%params);

Constructor.

=over 8

=item * C<lang>



( run in 0.603 second using v1.01-cache-2.11-cpan-71847e10f99 )