# RSS to HTML converter # Copyright (C) 2015 Harald Eilertsen # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU Affero General Public License for more details. # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . require 'rss' require 'open-uri' require 'erb' module Rss2Html class Feed attr_reader :title, :url def initialize(title, args) @title, @url = title, args['url'] @feed_header = load_template('feed_header.html.erb') @feed_footer = load_template('feed_footer.html.erb') @item_template = load_template('item.html.erb') end def fetch open(url) do |rss| feed = RSS::Parser.parse(rss) feed.entries.each do |item| yield item end end end def render feed = self output = @feed_header.result(binding) fetch do |entry| item = FeedItem.new(entry) output += @item_template.result(binding) end output += @feed_footer.result(binding) end private def load_template(t) view_path = File.join(File.dirname(__FILE__), 'views') ERB.new(IO.read(File.join(view_path, t))) end end end