The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

Changes for version 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.

Modules

Encapsulate RSS XML New Items Watching
Wrapper for RSS Feed Headline Items