diff options
author | Harald Eilertsen <haraldei@anduin.net> | 2015-05-05 10:17:35 +0200 |
---|---|---|
committer | Harald Eilertsen <haraldei@anduin.net> | 2015-05-05 10:17:35 +0200 |
commit | c5f5fcdb19c88d1d1bd27675adf181fdd1d49984 (patch) | |
tree | 8f0f115e4d8fbf2af4714b36a604579659497c5d | |
download | rss2html-c5f5fcdb19c88d1d1bd27675adf181fdd1d49984.tar.gz rss2html-c5f5fcdb19c88d1d1bd27675adf181fdd1d49984.tar.bz2 rss2html-c5f5fcdb19c88d1d1bd27675adf181fdd1d49984.zip |
Let's get started.
-rw-r--r-- | Gemfile | 4 | ||||
-rw-r--r-- | rss.rb | 61 |
2 files changed, 65 insertions, 0 deletions
@@ -0,0 +1,4 @@ +# A sample Gemfile +source "https://rubygems.org" + +gem 'pry' @@ -0,0 +1,61 @@ +require 'rss' +require 'open-uri' +require 'yaml' + + +class Item + attr_reader :title, :author, :date, :summary, :url + + def initialize(item) + @title = item.title.content + @author = item.author.name.content + @date = item.updated.content + @summary = item.summary.content.strip + @url = item.link.href + end +end + + +class Feed + attr_reader :title, :url, :items + + def initialize(title, args) + @title, @url = title, args['url'] + @items = [] + slurp + end + + private + + def slurp + open(url) do |rss| + feed = RSS::Parser.parse(rss) + + feed.entries.each do |item| + add Item.new(item) + end + end + end + + def add(item) + @items << item + end +end + +feeds = YAML.load(IO.read('feeds.yml')) +items = [] + +feeds.each do |t, f| + feed = Feed.new(t, f) + feed.items.each do |item| + puts %{<article>} + puts %{ <header>} + puts %{ <h1>#{item.title}</h1>} + puts %{ <section class="meta">Posted by #{item.author} at #{item.date}</section>} + puts %{ </header>} + puts %{ <section class="summary">#{item.summary}</summary>} + puts %{ <footer><a href="#{item.url}">Read more...</a></footer>} + puts %{</article>} + puts + end +end |