File Coverage

blib/lib/XML/NewsML_G2/AnyItem.pm
Criterion Covered Total %
statement 24 25 96.0
branch 2 2 100.0
condition n/a
subroutine 8 9 88.8
pod 0 2 0.0
total 34 38 89.4


line stmt bran cond sub pod time code
1             package XML::NewsML_G2::AnyItem;
2              
3 18     18   9381 use Moose;
  18         40  
  18         99  
4 18     18   107580 use namespace::autoclean;
  18         42  
  18         117  
5              
6 18     18   10488 use UUID::Tiny;
  18         243687  
  18         1697  
7 18     18   486 use XML::NewsML_G2::Types;
  18         41  
  18         413  
8 18     18   7323 use XML::NewsML_G2::Link;
  18         55  
  18         8720  
9              
10             has 'guid', isa => 'Str', is => 'ro', lazy => 1, builder => '_build_guid';
11             has 'doc_version', isa => 'Int', is => 'ro', default => '1';
12             has 'language', isa => 'Str', is => 'ro', required => 1;
13             has 'nature',
14             isa => 'XML::NewsML_G2::Types::Nature',
15             is => 'ro',
16             required => 1;
17             has 'provider', isa => 'XML::NewsML_G2::Provider', is => 'ro', required => 1;
18             has 'copyright_holder', isa => 'XML::NewsML_G2::Copyright_Holder', is => 'ro';
19             has 'usage_terms', isa => 'Str', is => 'rw';
20              
21             has 'service',
22             isa => 'XML::NewsML_G2::Service',
23             is => 'ro',
24             predicate => 'has_service';
25             has 'doc_status', isa => 'Str', is => 'ro', default => 'usable';
26              
27             has 'note', isa => 'Str', is => 'rw';
28             has 'closing', isa => 'Str', is => 'rw';
29              
30             has 'see_alsos',
31             isa => 'XML::NewsML_G2::ArrayRefOfLinks',
32             is => 'rw',
33             default => sub { [] },
34             coerce => 1,
35             traits => ['Array'],
36             handles => { add_see_also => 'push' };
37             has 'derived_froms',
38             isa => 'XML::NewsML_G2::ArrayRefOfLinks',
39             is => 'rw',
40             default => sub { [] },
41             coerce => 1,
42             traits => ['Array'],
43             handles => { add_derived_from => 'push' };
44             has 'processed_froms',
45             isa => 'XML::NewsML_G2::ArrayRefOfLinks',
46             is => 'rw',
47             default => sub { [] },
48             coerce => 1,
49             traits => ['Array'],
50             handles => { add_processed_from => 'push' };
51             has 'evolved_froms',
52             isa => 'XML::NewsML_G2::ArrayRefOfLinks',
53             is => 'rw',
54             default => sub { [] },
55             coerce => 1,
56             traits => ['Array'],
57             handles => { add_evolved_from => 'push' };
58              
59             has 'embargo', isa => 'DateTime', is => 'rw';
60             has 'embargo_text', isa => 'Str', is => 'rw';
61              
62             has 'indicators',
63             isa => 'ArrayRef[Str]',
64             is => 'rw',
65             default => sub { [] },
66             traits => ['Array'],
67             handles => { add_indicator => 'push' };
68              
69             has 'timezone', is => 'ro', isa => 'Str', default => 'local';
70              
71             sub _build_guid {
72 0     0   0 return UUID::Tiny::create_uuid_as_string();
73             }
74              
75             sub _attr_zombie_lifter {
76 4     4   9 my ( $self, $attr, $value ) = @_;
77              
78 4         8 my $adder = "add_$attr";
79 4         9 my $getter = $attr . 's';
80 4         82 warnings::warnif( 'deprecated',
81             "$attr is deprecated - use $adder / $getter instead" );
82              
83 4 100       1489 return defined $value ? $self->$adder($value) : $self->$getter->[0];
84             }
85              
86             sub see_also {
87 2     2 0 2062 my ( $self, $value ) = @_;
88 2         21 return $self->_attr_zombie_lifter( 'see_also', $value );
89             }
90              
91             sub derived_from {
92 2     2 0 4239 my ( $self, $value ) = @_;
93 2         5 return $self->_attr_zombie_lifter( 'derived_from', $value );
94             }
95              
96             __PACKAGE__->meta->make_immutable;
97              
98             1;
99             __END__
100              
101             =head1 NAME
102              
103             XML::NewsML_G2::AnyItem - base class for news and package items
104              
105             =head1 DESCRIPTION
106              
107             This module acts as a base class for NewsML-G2 news items and package
108             items. For a documentation of the attributes it provides, please see
109             L<XML::NewsML_G2::News_Item>.
110              
111              
112             =head1 AUTHOR
113              
114             Philipp Gortan C<< <philipp.gortan@apa.at> >>
115              
116             =head1 LICENCE AND COPYRIGHT
117              
118             Copyright (c) 2014-2015, APA-IT. All rights reserved.
119              
120             See L<XML::NewsML_G2> for the license.