1
2
3
4
5
6
7
8
9
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
43
44
45
46
47
48
49
50
51
|
require 'hpricot'
class Comic
attr_reader :rss, :title
def initialize(body)
@rss = Hpricot.XML(body)
@title = @rss.at("//channel/title").inner_text
end
def items
@rss.search("//channel/item")
end
def latest_image
@rss.search("//channel/item").first.inner_html.scan(/src="([^"]+\.\w+)"/).first
end
end
Shoes.app :width => 800, :height => 600 do
background "#555"
@title = "Web Funnies"
@feeds = [
"http://xkcd.com/rss.xml",
"http://feedproxy.google.com/DilbertDailyStrip?format=xml",
"http://www.smbc-comics.com/rss.php",
"http://www.daybydaycartoon.com/index.xml",
"http://www.questionablecontent.net/QCRSS.xml",
"http://indexed.blogspot.com/feeds/posts/default?alt=rss"
]
stack :margin => 10 do
title strong(@title), :align => "center", :stroke => "#DFA", :margin => 0
para "(loaded from RSS feeds)", :align => "center", :stroke => "#DFA",
:margin => 0
@feeds.each do |feed|
download feed do |dl|
stack :width => "100%", :margin => 10, :border => 1 do
c = Comic.new dl.response.body
stack :margin_right => gutter do
background "#333", :curve => 4
caption c.title, :stroke => "#CD9", :margin => 4
end
image c.latest_image.first, :margin => 8
end
end
end
end
end
|