File Coverage

blib/lib/YAPC/Russia.pm
Criterion Covered Total %
statement 37 43 86.0
branch 5 6 83.3
condition n/a
subroutine 9 11 81.8
pod 4 4 100.0
total 55 64 85.9


line stmt bran cond sub pod time code
1             package YAPC::Russia;
2             $YAPC::Russia::VERSION = '4.0.0';
3             # ABSTRACT: Perl conference YAPC::Russia
4              
5              
6 1     1   15314 use strict;
  1         1  
  1         24  
7 1     1   3 use warnings FATAL => 'all';
  1         0  
  1         30  
8 1     1   453 use utf8;
  1         7  
  1         3  
9 1     1   420 use open qw(:std :utf8);
  1         781  
  1         4  
10              
11 1     1   92 use Carp;
  1         1  
  1         60  
12              
13 1     1   515 use Moment;
  1         4052  
  1         314  
14              
15              
16              
17             sub new {
18 3     3 1 1240 my ($class, %params) = @_;
19              
20 3         4 my $self = {};
21 3         5 bless $self, $class;
22              
23 3         6 $self->{_year} = delete $params{year};
24 3 100       41 croak 'No "year"' if not defined $self->{_year};
25              
26 2 50       5 croak 'Got unknown params: ' . join(', ', keys %params) if %params;
27              
28 2         4 $self->{_data} = $self->_get_data_for_year($self->{_year});
29              
30 1         2 return $self;
31             }
32              
33              
34             sub get_dates {
35 1     1 1 4 my ($self) = @_;
36              
37 1         2 my @dates;
38 1         1 foreach my $d (@{$self->{_data}->{dates}}) {
  1         3  
39 2         176 push @dates, Moment->new( dt => "$d 00:00:00");
40             }
41              
42 1         88 return @dates;
43             }
44              
45              
46             sub get_place {
47 0     0 1 0 my ($self) = @_;
48              
49 0         0 return $self->{_data}->{place};
50             }
51              
52              
53             sub is_live {
54 0     0 1 0 my ($self) = @_;
55              
56 0         0 my $today_d = Moment->now()->get_d();
57              
58 0         0 return grep { $_->get_d() eq $today_d } $self->get_dates();
  0         0  
59             }
60              
61             sub _get_data_for_year {
62 2     2   3 my ($self, $year) = @_;
63              
64 2         21 my %data = (
65             2014 => {
66             dates => [qw(2014-06-13 2014-06-14)],
67             place => {
68             city => 'Saint Petersburg',
69             name_ru => 'Место Роста',
70             address_ru => 'Курляндская, дом 5',
71             site => 'http://mestorosta.biz',
72             phone => '+7 812 648-13-81',
73             foursquare => 'https://foursquare.com/v/%D0%BC%D0%B5%D1%81%D1%82%D0%BE-%D1%80%D0%BE%D1%81%D1%82%D0%B0/50fe895ce4b0382948fd8148',
74             }
75             },
76             2015 => {
77             dates => [qw(2015-05-16 2015-05-17)],
78             place => {
79             city => 'Moscow',
80             name_ru => 'Mail.ru',
81             address_ru => 'Ленинградский проспект 39, стр. 79',
82             foursquare => 'https://foursquare.com/v/mailru-hq/4b980acdf964a520532835e3',
83             }
84             },
85             2016 => {
86             dates => [qw(2016-06-25)],
87             place => {
88             city => 'Moscow',
89             name_ru => 'Mail.ru',
90             address_ru => 'Ленинградский проспект 39, стр. 79',
91             foursquare => 'https://foursquare.com/v/mailru-hq/4b980acdf964a520532835e3',
92             }
93             },
94             );
95              
96 2 100       5 if (exists $data{$year}) {
97 1         4 return $data{$year};
98             } else {
99 1         9 croak 'Sorry, no data for year "' . $year . '"';
100             }
101             }
102              
103             1;
104              
105             __END__