File Coverage

blib/lib/Graph/Reader/TGF/CSV.pm
Criterion Covered Total %
statement 38 39 97.4
branch 5 6 83.3
condition n/a
subroutine 8 8 100.0
pod n/a
total 51 53 96.2


line stmt bran cond sub pod time code
1             package Graph::Reader::TGF::CSV;
2              
3 4     4   233272 use base qw(Graph::Reader::TGF);
  4         9  
  4         2704  
4 4     4   466476 use strict;
  4         10  
  4         102  
5 4     4   17 use warnings;
  4         7  
  4         302  
6              
7 4     4   26 use Error::Pure qw(err);
  4         7  
  4         235  
8 4     4   3823 use Text::CSV;
  4         92664  
  4         2326  
9              
10             our $VERSION = 0.03;
11              
12             # Edge callback.
13             sub _edge_callback {
14 2     2   421 my ($self, $graph, $id1, $id2, $edge_label) = @_;
15 2         14 my $status = $self->{'_csv'}->parse($edge_label);
16 2 100       73 if (! $status) {
17             err 'Cannot parse edge label.',
18 1         8 'Error', $self->{'_csv'}->error_input,
19             'String', $edge_label;
20             }
21 1         6 my %params = map { split m/=/ms, $_ } $self->{'_csv'}->fields;
  2         17  
22 1         5 foreach my $key (keys %params) {
23 2         315 $graph->set_edge_attribute($id1, $id2, $key, $params{$key});
24             }
25 1         215 return;
26             }
27              
28             # Initialization.
29             sub _init {
30 2     2   699141 my ($self, $param_hr) = @_;
31 2         29 $self->SUPER::_init();
32 2         93 $self->{'_csv'} = Text::CSV->new({'binary' => 1});
33 2 50       483 if (! $self->{'_csv'}) {
34 0         0 err 'Cannot create Text::CSV object.',
35             'Error', Text::CSV->error_diag;
36             }
37 2         13 return;
38             }
39              
40             # Vertex callback.
41             sub _vertex_callback {
42 5     5   30014 my ($self, $graph, $id, $vertex_label) = @_;
43 5         38 my $status = $self->{'_csv'}->parse($vertex_label);
44 5 100       290 if (! $status) {
45             err 'Cannot parse vertex label.',
46 1         13 'Error', $self->{'_csv'}->error_input,
47             'String', $vertex_label;
48             }
49 4         21 my %params = map { split m/=/ms, $_ } $self->{'_csv'}->fields;
  8         85  
50 4         18 foreach my $key (keys %params) {
51 8         718 $graph->set_vertex_attribute($id, $key, $params{$key});
52             }
53 4         420 return;
54             }
55              
56             1;
57              
58             __END__