Feed-Data
view release on metacpan or search on metacpan
lib/Feed/Data.pm view on Meta::CPAN
width: 100%;
}
td, th {
word-break: break-word;
min-width: 100px;
border: 1px solid #ddd;
padding: 8px;
}
tr:nth-child(even){background-color: #f2f2f2;}
tr:hover {background-color: #ddd;}
th {
padding-top: 12px;
padding-bottom: 12px;
text-align: left;
background-color: #4c65af;
color: white;
}
</style>'
}
sub _csv {
my ( $self, $type ) = $validate->json->(@_);
my @render = $self->_convert_feed('generate', 'json');
my $string;
csv (in => \@render, out => \$string);
return $string;
}
sub _convert_feed {
my ( $self, $type, $format ) = $validate->convert_feed->(@_);
my @render;
foreach my $object ( @{$self->feed} ) {
push @render, $object->$type($format);
}
return @render;
}
__PACKAGE__->meta->make_immutable;
1;
__END__
=head1 NAME
Feed::Data - dynamic data feeds
=head1 VERSION
Version 0.10
=head1 SYNOPSIS
use Feed::Data;
my $feed = Feed::Data->new();
$feed->parse( 'https://services.parliament.uk/calendar/lords_main_chamber.rss' );
$feed->all;
$feed->count;
$feed->delete($index);
$feed->get($index);
$feed->write( 'path/to/empty.rss', 'rss' );
my $feed_text = $feed->render('rss');
foreach my $object ( $feed->all ) {
$object->render('text'); # text, html, xml..
$object->hash('text'); # text, html, xml...
$object->fields('title', 'description'); # returns title and description object
$object->edit(title => 'TTI', description => 'Should have been a PWA.'); # sets
$object->title->text;
$object->link->raw;
$object->description->text;
$object->image->raw;
$object->date->text;
$entry->title->as_text;
}
...
use Feed::Data;
my $feed = Feed::Data->new();
$feed->parse( 'https://services.parliament.uk/calendar/commons_main_chamber.rss' );
my $string = $feed->render('styled_table');
$feed->clear;
$feed->parse($string);
=head1 DESCRIPTION
Feed::Data is a frontend for building dynamic data feeds.
=cut
=head1 Methods
=cut
=head2 parse
Populates the feed Attribute, this is an Array of Feed::Data::Object 's
You can currently build Feeds by parsing xml (RSS, ATOM), JSON, CSV, plain text using key values seperated by a colon HTML via Meta Tags (twitter, opengraph) or table markup.
=cut
=over
=item URI
# any rss/atom feed or a web page that contains og or twitter markup
$feed->parse( 'http://examples.com/feed.xml' );
=item File
$feed->parse( 'path/to/feed.json' );
=item Raw
$feed->parse( 'qq{<?xml version="1.0"><feed> .... </feed>} );
=back
=head2 all
returns all elements in the current feed
$feed->all
=cut
=head2 count
returns the count of the current data feed
$feed->count
=cut
=head2 get
( run in 1.356 second using v1.01-cache-2.11-cpan-39bf76dae61 )