The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
Revision history for Perl module XML::RSS::Feed / XML::RSS::Headline

1.01
	- fixed pod error for $feed->parse()

1.00
	- Broke down and learned how to write tests then wrote a bunch
	  to make future development and bug fixes fun instead of painful.
	  (and kicked myself for not doing it sooner)
	- Holy crap that is pod documention for every public method for
	  both XML::RSS::Feed and XML::RSS::Headline
	- XML::RSS::Headlines have a new attribute 'description'
	- Caching is now done using storables rather than using the XML.
	  With headlines the title, url, description, and first_seen timestamp
	  are cached, and with feeds, the channel title, url, and last_updated
	  are cached.
	- New timestamps on feeds and headlines.  The ones on feeds are set
	  everytime the feed is updated and the ones on headlines are only
	  set when the headline is first seen.
	- Previously the headline limit was set by the RSS feed now you can 
	  as many headlines as you have memory.  You can set a limit by
	  setting the new attribute max_headlines
	- added new methods to support not using XML::RSS to parse feeds
	  you can use the module 4 ways now

	      1.  $feed->parse($xml_string);
	      
	      2.  $feed->process($items_array_ref,$feed_title,$feed_link);
	      
	      3.  $feed->pre_process;
		  $feed->process_items($items_array_ref);
		  $feed->post_process;

	      4.  $feed->pre_process;
		  $feed->create_headline(
		      headline => "headline", 
		      url      => "http://..."
		  );
		  $feed->post_process;

	  This was implemented to support using POE::Filter::XML as a no blocking
	  way to parse feeds rather than using the block XML::RSS via 
	  PoCo::RSSAggregator
	  
	- removed failed_to_parse and failed_to_fetch
	- changed default delay from 600 to 3600
	- added description set/get method to XML::RSS::Headline
	- changed XML::RSS::Feed->headlines to check 'wantarray' so you get
	  either an array or an array ref based on context.
	- you can now create a XML::RSS::Headline object by either passing in
	  an XML::RSS item datastructure 
	  
		my $headline = XML::RSS::Headline->new(
		    item => { 
			title => "blah", 
	                link  => "http://blah.blash", 
			more  => "..."
		    },
		    headline_as_id => 1, # bool value
		);

	  or you can just pass in a headline and url which makes a lot more 
	  sense.  (LotR asked me why I did initated the object with the 
	  XML::RSS item structure...  I did it because I'm LAZY ok) :P

		my $headline = XML::RSS::Headline->new(
		    headline       => "blah", 
	            url            => "http://blah.blash", 
		    headline_as_id => 1, # bool value
		);

	- Moved XML::RSS::Headline to its own package and wrote actual
	  pod to describes its accessors.  XML::RSS::Headline objects are
	  returned by XML::RSS::Feed->late_breaking_news and merlyn suggested
	  it would be nice to see what methods could be called upon the
	  the returned headline object.

0.25
	- added Clone 0.13 dependency
	- upped version to 0.25

0.20
	- added new param 'tmpdir'.  The module will now attempt to load 
	  cached XML when this param is given.  The XML is held in memory
	  until the DESTROY method is called and the XML is written to the
	  tmpdir if it is defined.
	- better debugging if 'debug' is defined.

0.11
	- issue with Module::Release

0.10
	- moved XML::RSS::Feed::Headline into XML::RSS::Feed as XML::RSS::Headline
	- fixed a return code error on parse - was returning 0 on parse and should
	  returning 1 (this didn't really affect anything though)
	- added a 'hlobj' attribute so that you can subclass XML::RSS::Headline to
	  customize a headline.  An example of this is subclassing XML::RSS::Headline
	  to create a new headline method that takes advantage of the extra info
	  found with in the <item> xml block

		package XML::RSS::Headline::PerlJobs;
		use strict;
		use XML::RSS::Feed;
		use base qw(XML::RSS::Headline);

		sub headline
		{
		    my ($self) = @_;
		    # no idea why they use 'http://jobs.perl.org/rss/' as a hash key
		    my $sub_hash = $self->{item}{'http://jobs.perl.org/rss/'};
		    return "$self->{item}{title}\n$sub_hash->{company_name} - " . 
			"$sub_hash->{location}\n" .  "$sub_hash->{hours}, " . 
			"$sub_hash->{employment_terms}";
		}

		1;

	  Which produced a more detailed headline than you would normally get.  This 
	  example is from rssbot on irc.perl.org in channel #news.

	      <rssbot>  + Part Time Perl
	      <rssbot>    Brian Koontz - United States, TX, Dallas
	      <rssbot>    Part time, Independent contractor (project-based)
	      <rssbot>    http://jobs.perl.org/job/950

	- removed _build_headline because this was fixed by sublcassing 
	  XML::RSS::Headline instead of XML::RSS::Feed;
	- changed late breaking news to use scalar instead of quote
	  
	    scalar @{$self->{late_breaking_news}}; 

	  instead of

	    "@{$self->{late_breaking_news}}"; 	         

0.01
	- original version