root/lang/perl/Data-Feed/trunk/lib/Data/Feed/Atom.pm @ 16391

Revision 16391, 1.8 kB (checked in by daisuke, 5 years ago)

cleanup

  • Property svn:keywords set to Id
Line 
1# $Id$
2
3package Data::Feed::Atom;
4use Moose;
5use Data::Feed::Atom::Entry;
6use XML::Atom::Feed;
7use XML::Atom::Person;
8use XML::Atom::Util qw( iso2dt );
9use List::Util qw( first );
10use DateTime::Format::W3CDTF;
11
12with 'Data::Feed::Web::Feed';
13
14no Moose;
15
16use constant format => 'Atom';
17
18sub title        { shift->feed->title(@_) }
19sub description  { shift->feed->description(@_) }
20sub copyright    { shift->feed->copyright(@_) }
21sub language     { shift->feed->language(@_) }
22sub generator    { shift->feed->generator(@_) }
23
24sub link {
25    my $self = shift;
26    if (@_) {
27        $self->feed->add_link({ rel => 'alternate', href => $_[0],
28                                  type => 'text/html', });
29    } else {
30        my $l = first { !defined $_->rel || $_->rel eq 'alternate' } $self->feed->link;
31        $l ? $l->href : undef;
32    }
33}
34
35sub author {
36    my $self = shift;
37    if (@_ && $_[0]) {
38        my $person = XML::Atom::Person->new(Version => 1.0);
39        $person->name($_[0]);
40        $self->feed->author($person);
41    } else {
42        $self->feed->author ? $self->feed->author->name : undef;
43    }
44}
45
46sub modified {
47    my $self = shift;
48    if (@_) {
49        $self->feed->modified(DateTime::Format::W3CDTF->format_datetime($_[0]));
50    } else {
51        $self->feed->modified ? iso2dt($self->feed->modified) : undef;
52    }
53}
54
55sub entries {
56    my $self = shift;
57
58    my @entries;
59    for my $entry ($self->feed->entries) {
60        push @entries, Data::Feed::Atom::Entry->new(entry => $entry);
61    }
62
63    return @entries;
64}
65
66sub add_entry {
67    my ($self, $entry) = @_;
68    return $self->feed->add_entry($entry->entry);
69}
70
711;
72
73__END__
74
75=head1 NAME
76
77Data::Feed::Atom - Atom Feed
78
79=head2 add_entry
80
81=head2 author
82
83=head2 copyright
84
85=head2 description
86
87=head2 entries
88
89=head2 format
90
91=head2 generator
92
93=head2 language
94
95=head2 link
96
97=head2 modified
98
99=head2 title
100
101
102=cut
103
Note: See TracBrowser for help on using the browser.