Class: Fede::FeedGenerator
- Inherits:
-
Object
- Object
- Fede::FeedGenerator
- Defined in:
- lib/fede/generator.rb
Instance Method Summary collapse
- #append(item_count = 1) ⇒ Object
- #append_available_files ⇒ Object
- #do_append(last_n_episodes) ⇒ Object
- #generate ⇒ Object
-
#initialize(site_config, data_directory) ⇒ FeedGenerator
constructor
A new instance of FeedGenerator.
Constructor Details
#initialize(site_config, data_directory) ⇒ FeedGenerator
Returns a new instance of FeedGenerator.
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/fede/generator.rb', line 8 def initialize(site_config, data_directory) @config = parse_yaml site_config @feed_file = get_setting 'feed_file' @data = parse_data data_directory @episode_list = [] @ep_name = get_setting 'ep_name' @ep_pub_date = get_setting 'ep_pub_date' @ep_url = get_setting 'ep_url' @ep_desc = get_setting 'ep_desc' @ep_img = get_setting 'ep_img' @ep_details = get_setting 'ep_details' @season_name = get_setting 'season_name' @season_episode_list = get_setting 'season_episode_list' load_episode_list end |
Instance Method Details
#append(item_count = 1) ⇒ Object
29 30 31 32 33 34 35 |
# File 'lib/fede/generator.rb', line 29 def append(item_count = 1) last_n_episodes = [] item_count.times.sort_by(&:-@).each do |i| last_n_episodes << generate_episode_item(@episode_list[-i - 1]) end do_append last_n_episodes end |
#append_available_files ⇒ Object
37 38 39 40 41 42 43 44 45 |
# File 'lib/fede/generator.rb', line 37 def append_available_files episodes = [] @episode_list.each do |ep| next unless File.file? ep['url'] episodes << ep end do_append episodes end |
#do_append(last_n_episodes) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/fede/generator.rb', line 47 def do_append(last_n_episodes) File.open(@feed_file, 'r+') do |file| insert_position = Kernel.loop do pos = file.pos break pos if file.gets.include?('</channel>') || file.eof? end file.seek(insert_position, IO::SEEK_SET) = file.read file.seek(insert_position, IO::SEEK_SET) episodes_string = last_n_episodes.reduce('') { |prev, ep| "#{prev}#{ep.to_s(2)}" } file.write("#{episodes_string}#{footer}") end puts "\tFEDE: Last #{last_n_episodes.length} episode(s) appended to #{@feed_file}!" rescue Errno::ENOENT puts "Cannot append if feed doesn't exist" end |
#generate ⇒ Object
24 25 26 27 |
# File 'lib/fede/generator.rb', line 24 def generate output_feed puts "\tFEDE: #{@feed_file} written!" end |