From 18024785860020d83b14b686c47ad7ef455f0da7 Mon Sep 17 00:00:00 2001 From: dakkar Date: Sun, 9 Dec 2012 12:43:09 +0000 Subject: sample structure --- lib/Feed.pm | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++ lib/Feed/Printer.pm | 23 ++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 lib/Feed.pm create mode 100644 lib/Feed/Printer.pm (limited to 'lib') diff --git a/lib/Feed.pm b/lib/Feed.pm new file mode 100644 index 0000000..d8c67a8 --- /dev/null +++ b/lib/Feed.pm @@ -0,0 +1,62 @@ +package Feed; +use Moose; +use namespace::autoclean; +use 5.016; +use MooseX::Types::URI 'Uri'; +with 'MooseX::Traits'; +use XML::Feed; + +has uri => ( + is => 'ro', + isa => Uri, + coerce => 1, + required => 1, +); + +has feed => ( + is => 'ro', + isa => 'XML::Feed', + lazy_build => 1, +); + +has _entries => ( + is => 'ro', + isa => 'ArrayRef[XML::Feed::Entry]', + traits => [ 'Array' ], + lazy_build => 1, + handles => { + entries => 'elements', + count_entries => 'count', + }, +); + +sub process { + my ($self) = @_; + + for my $entry ($self->entries) { + $self->process_entry($entry); + } + + return; +} + +sub _build_feed { + my ($self) = @_; + + return XML::Feed->parse($self->uri) + or die XML::Feed->errstr; +} + +sub _build__entries { + my ($self) = @_; + + + return [$self->feed->entries]; +} + +sub process_entry { +} + +__PACKAGE__->meta->make_immutable; + +1; diff --git a/lib/Feed/Printer.pm b/lib/Feed/Printer.pm new file mode 100644 index 0000000..5743883 --- /dev/null +++ b/lib/Feed/Printer.pm @@ -0,0 +1,23 @@ +package Feed::Printer; +use Moose::Role; +use 5.016; +use namespace::autoclean; + +requires 'process'; + +before process => sub { + my ($self) = @_; + + say $self->feed->title; +}; + +sub process_entry { + my ($self,$entry) = @_; + + for my $f (qw(id title link issued modified)) { + say " $f:",$entry->$f//''; + } + say ''; +} + +1; -- cgit v1.2.3