File Coverage

blib/lib/WWW/PTV/Area.pm
Criterion Covered Total %
statement 6 43 13.9
branch 0 6 0.0
condition n/a
subroutine 2 12 16.6
pod 9 10 90.0
total 17 71 23.9


line stmt bran cond sub pod time code
1             package WWW::PTV::Area;
2              
3 2     2   12 use strict;
  2         4  
  2         54  
4 2     2   10 use warnings;
  2         4  
  2         1076  
5              
6             sub new {
7 0     0 0   my ( $class, %args ) = @_;
8              
9 0           my $self = bless {}, $class;
10 0           $self->{id} = $args{id};
11 0           $self->{name} = $args{name};
12 0           $self->{suburbs} = $args{suburbs};
13 0           $self->{service} = $args{service};
14              
15 0           return $self
16             }
17              
18             sub id {
19             return $_[0]->{ id }
20 0     0 1   }
21              
22             sub name {
23             return $_[0]->{ name }
24 0     0 1   }
25              
26             sub suburbs {
27             return $_[0]->{ suburbs }
28 0     0 1   }
29              
30             sub towns {
31 0     0 1   $_[0]->suburbs
32             }
33              
34             sub service_types {
35 0     0 1   return keys %{ $_[0]->{ service }{ names } }
  0            
36             }
37              
38             sub service_names {
39             return $_[0]->{ service }{ names }
40 0     0 1   }
41              
42             sub service_links {
43             return $_[0]->{ service }{ links }
44 0     0 1   }
45              
46             sub services {
47 0     0 1   my $self = shift;
48              
49 0           my @res;
50 0           my $service_names = $self->service_names;
51 0           my $service_links = $self->service_links;
52              
53             # { name => 'Name', link => 'link', type => 'Type' }
54 0           foreach my $type ( $self->service_types ) {
55 0           my $c = 0;
56 0           my $r;
57              
58 0           foreach my $service ( @{ $service_names->{$type} } ) {
  0            
59             my $r = { type => $type,
60 0           name => @{ $service_names->{ $type } }[ $c ],
61 0           link => @{ $service_links->{ $type } }[ $c ] };
  0            
62 0           push @res, $r;
63 0           $c++;
64             }
65             }
66              
67 0           return @res;
68             }
69              
70             sub services_like {
71 0     0 1   my ( $self, %args ) = @_;
72              
73 0 0         $args{type} or return grep { $_->{name} =~ /$args{name}/i } $self->services;
  0            
74              
75 0 0         $args{name} or return grep { $_->{type} =~ /$args{type}/i } $self->services;
  0            
76              
77             return grep {
78 0           $_->{type} =~ /$args{type}/i
79 0 0         and $_->{name} =~ /$args{name}/i
80             } $self->services
81             }
82              
83             1;
84              
85             __END__