Revision history for XML::Feed
+0.23
+ - Fix mixing and matching of RSS and Atom
+ http://rt.cpan.org/Ticket/Display.html?id=21335
+ (Shlomi Fish SHLOMIF)
+ - Note that multiple categories was fixed at some point
+ http://rt.cpan.org/Ticket/Display.html?id=30234
+ (mattn)
+
0.22 2008-10-22
- Correct namespace for terms in RSS
http://rt.cpan.org/Ticket/Display.html?id=25393
}
}
+sub _convert_entry {
+ my $feed = shift;
+ my $entry = shift;
+ my $feed_format = ref($feed); $feed_format =~ s!^XML::Feed::!!;
+ my $entry_format = ref($entry); $entry_format =~ s!^XML::Feed::Entry::!!;
+ return $entry if $entry_format eq $feed_format;
+ return $entry->convert($feed_format);
+}
+
sub format;
sub title;
sub link;
}
sub add_entry {
- my $feed = shift;
- my($entry) = @_;
+ my $feed = shift;
+ my $entry = shift || return;
+ $entry = $feed->_convert_entry($entry);
$feed->{atom}->add_entry($entry->unwrap);
}
}
sub add_entry {
- my $feed = shift;
- my($entry) = @_;
- use Data::Dumper;
+ my $feed = shift;
+ my $entry = shift || return;
+ $entry = $feed->_convert_entry($entry);
$feed->{rss}->add_item(%{ $entry->unwrap });
}
use Test::More tests => 3;
use XML::Feed;
-my $feed = XML::Feed->new('Atom');
+my $feed = XML::Feed->new('RSS');
my $other = XML::Feed->parse('t/samples/atom.xml')->convert('Atom');
$feed->splice($other);
--- /dev/null
+# $Id: $
+
+use strict;
+use Test::More tests => 6;
+use XML::Feed;
+
+
+my $afeed = XML::Feed->new('Atom');
+my $rfeed = XML::Feed->new('RSS');
+my $atom = make_entry('Atom');
+my $rss = make_entry('RSS');
+
+
+ok($afeed->add_entry($atom), "Added Atom entry to Atom feed");
+ok($afeed->add_entry($rss), "Added RSS entry to Atom feed");
+
+ok($rfeed->add_entry($rss), "Added RSS entry to RSS feed");
+ok($rfeed->add_entry($atom), "Added Atom entry to RSS feed");
+
+
+
+is(scalar $afeed->entries, 2, 'Now 2 entries in Atom feed');
+is(scalar $rfeed->entries, 2, 'Now 2 entries in RSS feed');
+
+sub make_entry {
+ my $format = shift;
+ my $entry = XML::Feed::Entry->new($format);
+ $entry->title("Test Title ".rand());
+ $entry->content("Foo");
+ $entry->summary("Bar");
+ return $entry;
+}