Sha256: 065ed9df951257d6d4263b6e62eea16f9ac7ed2ba21c4eaca1e619d414746aa3
Contents?: true
Size: 1.37 KB
Versions: 5
Compression:
Stored size: 1.37 KB
Contents
require 'rss' require_relative 'item' module Html2rss class FeedBuilder def initialize(config) @config = config end ## # @return [RSS:Rss] def rss RSS::Maker.make('2.0') do |maker| add_channel_to_maker(maker) feed_items.map do |feed_item| add_item_to_items(feed_item, maker.items) end end end private attr_reader :config def add_channel_to_maker(maker) %i[language author title description link ttl].each do |attribute_name| maker.channel.public_send("#{attribute_name}=".to_sym, config.public_send(attribute_name)) end maker.channel.generator = "html2rss V. #{::Html2rss::VERSION}" maker.channel.lastBuildDate = Time.now.to_s end def feed_items @feed_items ||= Item.from_url config.url, config end def add_item_to_items(feed_item, items) return unless feed_item.valid? items.new_item do |rss_item| feed_item.available_attributes.each do |attribute_name| rss_item.public_send("#{attribute_name}=".to_sym, feed_item.public_send(attribute_name)) end feed_item.categories.each do |category| rss_item.categories.new_category.content = category end rss_item.guid.content = Digest::SHA1.hexdigest(feed_item.title) rss_item.guid.isPermaLink = false end end end end
Version data entries
5 entries across 5 versions & 1 rubygems