Module: Jekyll::RSS

Defined in:
lib/jekyll/converters/rss.rb

Class Method Summary collapse

Class Method Details

.process(source = "rss.xml") ⇒ Object

Reads posts from an RSS feed. It creates a post file for each entry in the RSS.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/jekyll/converters/rss.rb', line 10

def self.process(source = "rss.xml")
  #FileUtils.mkdir_p "_posts"
  content = ""
  open(source, "r") { |f| content << f.read }
  doc = REXML::Document.new(content)
  posts = 0
  doc.elements.each("rss/channel/item") do |item|
    link = item.elements["link"].text
    name = link.split("/")[-1]
    name = $1 if name =~ /(.*)\.html/
    name = $1 if name =~ /\d+\-(.*)/

    #title = item.elements["title"].text
    content = item.elements["content:encoded"].text
    timestamp = Time.parse(item.elements["pubDate"].text)
    filename = "_posts/#{timestamp.strftime("%Y-%m-%d")}-#{name}.html"
    puts "#{link} -> #{filename}"
    File.open(filename, "w") do |f|
      YAML.dump(
        {
          "layout" => "post",
          "name" => name,
          "title" => item.elements["title"].text,
          "time" => timestamp,
        },
        f
      )
      f.puts "---\n#{content}"
    end
    posts += 1
  end
  puts "Created #{posts} posts!"
end