File Coverage

blib/lib/MARC/Leader/Print.pm
Criterion Covered Total %
statement 35 79 44.3
branch 5 20 25.0
condition n/a
subroutine 8 11 72.7
pod 2 2 100.0
total 50 112 44.6


line stmt bran cond sub pod time code
1             package MARC::Leader::Print;
2              
3 3     3   101373 use strict;
  3         4  
  3         79  
4 3     3   9 use warnings;
  3         4  
  3         117  
5              
6 3     3   1185 use Class::Utils qw(set_params);
  3         21610  
  3         53  
7 3     3   159 use English;
  3         4  
  3         16  
8 3     3   924 use Error::Pure qw(err);
  3         5  
  3         136  
9 3     3   2687 use MARC::Leader::L10N 0.02;
  3         34452  
  3         97  
10 3     3   1226 use Mo::utils::Language 0.05 qw(check_language_639_1);
  3         546966  
  3         61  
11              
12             our $VERSION = 0.05;
13              
14             # Constructor.
15             sub new {
16 2     2 1 214295 my ($class, @params) = @_;
17              
18             # Create object.
19 2         4 my $self = bless {}, $class;
20              
21             # Language.
22 2         8 $self->{'lang'} = undef;
23              
24             # Use with ANSI sequences.
25 2         3 $self->{'mode_ansi'} = undef;
26              
27             # Use description.
28 2         4 $self->{'mode_desc'} = 1;
29              
30             # Output separator.
31 2         5 $self->{'output_separator'} = "\n";
32              
33             # Process parameters.
34 2         8 set_params($self, @params);
35              
36             # Check 'lang'.
37 2         22 check_language_639_1($self, 'lang');
38              
39 1 50       21 if (! defined $self->{'mode_ansi'}) {
40 1 50       6 if (exists $ENV{'NO_COLOR'}) {
    50          
41 0         0 $self->{'mode_ansi'} = 0;
42             } elsif (defined $ENV{'COLOR'}) {
43 0         0 $self->{'mode_ansi'} = 1;
44             } else {
45 1         2 $self->{'mode_ansi'} = 0;
46             }
47             }
48              
49             # Check routine for ANSI colors output.
50 1 50       3 if ($self->{'mode_ansi'}) {
51 0         0 eval {
52 0         0 require Term::ANSIColor;
53             };
54 0 0       0 if ($EVAL_ERROR) {
55 0         0 err "Cannot load 'Term::ANSIColor' module.";
56             }
57             }
58              
59 1 50       14 $self->{'_l'} = MARC::Leader::L10N->get_handle(defined $self->{'lang'} ? $self->{'lang'} : ());
60              
61 1         1620 return $self;
62             }
63              
64             sub print {
65 0     0 1   my ($self, $leader_obj) = @_;
66              
67 0           my @ret;
68 0           push @ret, $self->_key('Record length').$leader_obj->length;
69 0           push @ret, $self->_key('Record status').$self->_print($leader_obj, 'status');
70 0           push @ret, $self->_key('Type of record').$self->_print($leader_obj, 'type');
71 0           push @ret, $self->_key('Bibliographic level').$self->_print($leader_obj,
72             'bibliographic_level');
73 0           push @ret, $self->_key('Type of control').$self->_print($leader_obj,
74             'type_of_control');
75 0           push @ret, $self->_key('Character coding scheme').$self->_print($leader_obj,
76             'char_coding_scheme');
77 0           push @ret, $self->_key('Indicator count').$self->_print($leader_obj,
78             'indicator_count');
79 0           push @ret, $self->_key('Subfield code count').$self->_print($leader_obj,
80             'subfield_code_count', 1);
81 0           push @ret, $self->_key('Base address of data').$leader_obj->data_base_addr;
82 0           push @ret, $self->_key('Encoding level').$self->_print($leader_obj,
83             'encoding_level');
84 0           push @ret, $self->_key('Descriptive cataloging form').$self->_print($leader_obj,
85             'descriptive_cataloging_form');
86 0           push @ret, $self->_key('Multipart resource record level').$self->_print($leader_obj,
87             'multipart_resource_record_level');
88 0           push @ret, $self->_key('Length of the length-of-field portion').$self->_print($leader_obj,
89             'length_of_field_portion_len', 1);
90 0           push @ret, $self->_key('Length of the starting-character-position portion').
91             $self->_print($leader_obj, 'starting_char_pos_portion_len', 1);
92 0           push @ret, $self->_key('Length of the implementation-defined portion').
93             $self->_print($leader_obj, 'impl_def_portion_len', 1);
94 0           push @ret, $self->_key('Undefined').$self->_print($leader_obj, 'undefined');
95              
96 0 0         return wantarray ? @ret : (join $self->{'output_separator'}, @ret);
97             }
98              
99             sub _key {
100 0     0     my ($self, $key) = @_;
101              
102 0           my $ret;
103 0           my $value = $self->{'_l'}->maketext($key);
104 0 0         if ($self->{'mode_ansi'}) {
105 0           $ret = Term::ANSIColor::color('cyan').$value.Term::ANSIColor::color('reset');
106             } else {
107 0           $ret = $value;
108             }
109 0           $ret .= ': ';
110              
111 0           return $ret;
112             }
113              
114             sub _print {
115 0     0     my ($self, $leader_obj, $method_name, $value) = @_;
116              
117 0           my $ret_value = $leader_obj->$method_name;
118 0           my $ret;
119 0 0         if ($self->{'mode_desc'}) {
120 0           my $ret_value_fixed = $ret_value;
121 0           $ret_value_fixed =~ s/\ /_/msg;
122 0           $ret = $self->{'_l'}->maketext($method_name.'.'.$ret_value_fixed);
123 0 0         if (defined $value) {
124 0           $ret .= ' ('.$ret_value.')';
125             }
126             } else {
127 0           $ret = $ret_value;
128             }
129              
130 0           return $ret;
131             }
132              
133             1;
134              
135             __END__