#!/usr/bin/perl use warnings; use strict; my $data_dir = "data"; $data_dir = "t/$data_dir" unless -d $data_dir; use Test::More qw(no_plan); use Log::Log4perl qw(:easy); use File::Temp qw(tempfile); use XML::Simple; # Log::Log4perl->easy_init($DEBUG); my($fh, $outfile) = tempfile(CLEANUP => 1); use XML::RSS::FromHTML::Simple; my $f = XML::RSS::FromHTML::Simple->new({ html_file => "$data_dir/art_eng.html", base_url => "http://perlmeister.com", rss_file => $outfile, }); $f->link_filter( sub { my($url, $text) = @_; # print "URL=$url\n"; if($url =~ m#linux-magazine\.com/#) { return 1; } else { return 0; } }); $f->make_rss(); ok(-s $outfile, "RSS file created"); # Read XML file back in my $data = XMLin($outfile); is($data->{item}->[0]->{link}, 'http://www.linux-magazine.com/issue/71/Perl_Link_Spam.pdf', "Check RSS (first item)"); my %urls = map { $_->{link} => 1 } @ { $data->{item} }; ok(!exists $urls{'http://www.perl.com/pub/a/2002/09/11/log4perl.html'}, "Non linux-magazine url doesn't exist"); # Try rss_attrs $f->link_filter( sub { my($url, $text, $processor) = @_; #print "Found $url $text\n"; if($url =~ m#issue/51#) { $processor->rss_attrs({ description => 'This is cool stuff', title => 'Where it all began', }); return 1; } else { return 0; } }); $f->make_rss(); # Read XML file back in $data = XMLin($outfile); is($data->{item}->{title}, 'Where it all began', "Modified title"); is($data->{item}->{description}, 'This is cool stuff', "Modified desc"); is($data->{item}->{link}, 'http://www.linux-magazine.com/issue/51/Perl_Collecting_News_Headlines.pdf', "url check"); #use Data::Dumper; #print Dumper($data);