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

2.01
	- Fixed the 011_test_pod and 012_test_pod_coverage tests to correctly detect
	  if the relative Test::Pod and Test::Pod::Coverage modules are installed
	  (Thanks to Randal Schwartz for taking the time to shoot me an e-mail and 
	  pointing it out) :)

2.0
	- The biggest change in in the tests.  This distrobution is now at 100% coverage!
	  I found serveral major issues just by painstakingly making sure that each bit
	  was tested.  While I don't think that 100% is always nessesary, it just feels
	  really good to see all green 100%'s on that coverage report.
	- Added encode_utf8 before md5_base64 so watching uniqueness via 
	  headline_as_id works with uft8 headlines (thanks hachi!)
	- You can now create XML::RSS::Headline objects with just a url and description.
	  It seems that you can have an RSS item without a title and the title is build
	  from a substr of the description.
	- added XML::RSS::Headline::PerlJobs example of subclassing XML::RSS::Headline
	- Now if caching is turned on, it caches after every parse rather than on DESTROY
	- now traps a bad 'store' attempt and issues a warn.  I had an if statement and
	  for got I needed to try/catch with eval when using Storable.
	- now decodes HTML entities in XML::RSS::Headline
	- Lots of documentation updates and clarifications, and formatting changes.

1.1
	- Change the description in the modules name
	- Added HTML::Entities decode on headlines (wonder why XML::RSS doesn't do it)
	- cleaned up pod
	- Beefed up the tests using Devel::Coverage
	- Added sample subclass of XML::RSS::Headline (XML::RSS::Headline::PerlJobs) 
	  was in documentation and just added it to the distrobution.

1.05	
	- Fixed caching issue.  Now cache in post process after every fetch
	  instead of on object destroy (which was broken) :(
	- Did "pod2text XML/RSS/Feed.pm > README"

1.04
	- updated my e-mail address to jbisbee@cpan.org
	- stupid regression, the order of the headline array was reversed
	  from version 0.25 to 1.00 and has been fixed in 1.04.  This is
	  a seriously regression so make sure you don't use releases
	  1.00-1.03.  (I wrote tests for the module AFTER I had the order
	  reversed, had I written the tests first, the whole bug would 
	  have been avoided.  I'm now a test driven development 
	  convert)

1.03
	- added failed_to_fetch and failed_to_parse back as deprecated 
	  methods that return false and issue a warn statement if they're 
	  used
	- added a test to make sure that the methods stay and they return false

1.02
	- changed C<> to B<> because pod looks crap on search.cpan.org

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