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 )