Sha256: 51e62ac47d1021c5268082f3064d1e28d7bff9d89ef02371a8849a5747af6fb8
Contents?: true
Size: 1.52 KB
Versions: 6
Compression:
Stored size: 1.52 KB
Contents
module JekyllImport module Importers class RSS < Importer def self.specify_options(c) c.option 'source', '--source NAME', 'The RSS file or URL to import' end def self.validate(options) if options['source'].nil? abort "Missing mandatory option --source." end end def self.require_deps JekyllImport.require_with_fallback(%w[ rss/1.0 rss/2.0 open-uri fileutils safe_yaml ]) end # Process the import. # # source - a URL or a local file String. # # Returns nothing. def self.process(options) source = options.fetch('source') content = "" open(source) { |s| content = s.read } rss = ::RSS::Parser.parse(content, false) raise "There doesn't appear to be any RSS items at the source (#{source}) provided." unless rss rss.items.each do |item| formatted_date = item.date.strftime('%Y-%m-%d') post_name = item.title.split(%r{ |!|/|:|&|-|$|,}).map do |i| i.downcase if i != '' end.compact.join('-') name = "#{formatted_date}-#{post_name}" header = { 'layout' => 'post', 'title' => item.title } FileUtils.mkdir_p("_posts") File.open("_posts/#{name}.html", "w") do |f| f.puts header.to_yaml f.puts "---\n\n" f.puts item.description end end end end end end
Version data entries
6 entries across 6 versions & 1 rubygems