File Coverage

blib/lib/XML/Atom/Syndication/Feed.pm
Criterion Covered Total %
statement 33 33 100.0
branch 7 10 70.0
condition n/a
subroutine 7 7 100.0
pod 4 4 100.0
total 51 54 94.4


line stmt bran cond sub pod time code
1             package XML::Atom::Syndication::Feed;
2 21     21   356489 use strict;
  21         36  
  21         650  
3              
4 21     21   109 use base qw( XML::Atom::Syndication::Thing );
  21         33  
  21         7625  
5              
6 21     21   114 use XML::Atom::Syndication::Util qw( nodelist );
  21         31  
  21         7369  
7              
8             XML::Atom::Syndication::Feed->mk_accessors('element', 'icon', 'logo');
9             XML::Atom::Syndication::Feed->mk_accessors('XML::Atom::Syndication::Generator',
10             'generator');
11             XML::Atom::Syndication::Feed->mk_accessors('XML::Atom::Syndication::Text',
12             'subtitle');
13              
14             # deprecated 0.3 accessors
15             XML::Atom::Syndication::Feed->mk_accessors('attribute', 'version');
16             XML::Atom::Syndication::Feed->mk_accessors('element', 'copyright', 'modified',
17             'created');
18             XML::Atom::Syndication::Feed->mk_accessors('XML::Atom::Syndication::Text',
19             'tagline', 'info');
20              
21 4     4 1 13 sub element_name { 'feed' }
22              
23             sub add_entry {
24 2     2 1 7 my ($feed, $entry) = @_;
25 2 50       13 $entry = $entry->elem if ref $entry eq 'XML::Atom::Syndication::Entry';
26 2         7 $feed->set_element($feed->ns, 'entry', $entry, 1);
27             }
28              
29             sub insert_entry {
30 2     2 1 7 my ($feed, $entry) = @_;
31 2 50       13 $entry = $entry->elem if ref $entry eq 'XML::Atom::Syndication::Entry';
32 2         7 my ($first) = nodelist($feed, $feed->ns, 'entry');
33 2 100       9 if ($first) {
34 1         3 my $e = $feed->elem;
35 1         3 $entry->parent($e);
36             my @new =
37 1 100       3 map { $_ eq $first ? ($entry, $_) : $_ } @{$e->contents};
  6         15  
  1         3  
38 1         4 $e->contents(\@new);
39             } else {
40 1         13 $feed->set_element($feed->ns, 'entry', $entry, 1);
41             }
42             }
43              
44             sub entries { # why? because read_only????
45 67     67 1 1101 my $feed = shift;
46 67         302 my @nodes = nodelist($feed, $feed->ns, 'entry');
47 67 50       153 return unless @nodes;
48 67         70 my @entries;
49 67         4521 require XML::Atom::Syndication::Entry;
50 67         166 foreach my $node (@nodes) {
51 76         171 my $entry =
52             XML::Atom::Syndication::Entry->new(Elem => $node,
53             Namespace => $feed->ns);
54 76         125 push @entries, $entry;
55             }
56 67         186 @entries;
57             }
58              
59             1;
60              
61             __END__