Sha256: 45ceff824bbb6b35fc560b62c69c403b19c1cff03142ea85fae0ed8e60ae9218

Contents?: true

Size: 936 Bytes

Versions: 1

Compression:

Stored size: 936 Bytes

Contents

require 'hpricot'
require 'open-uri'

module Flannel
  class FeedParser
    def initialize cache
      @cache = cache
    end
    
    def sub_feeds(url)
      url = format_url(url)
      get_news(url)
    end
    
    def format_url url
      url.strip!
      url = "http://#{url}" if url[0..6] != "http://"
      url
    end
    
    def get_document url
      doc = open(url)
      doc
    end
    
    def format_item(link, title)
      "  <li>\n    <a href='#{link}'>#{title}</a>\n  </li>\n"
    end

    def get_news url
      item_string = nil
      item_string = @cache.retrieve(url) if @cache
      
      unless item_string 
	item_string = ""
	doc = Hpricot.XML(get_document(url))

	(doc/"item").each do |item|
	  link = (item/"link").inner_html
	  title = (item/"title").inner_html
	  item_string << format_item(link, title)
	end
	
	@cache.save url, item_string if @cache
      end
      
      item_string
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
flannel-0.2.5 lib/flannel/feed_parser.rb