rss/makerとQuartz Composer
Quartz Composer
Quartz Composerを使ってRSS表示するスクリーンセーバを作ることができます。 んで、これを使ってスライドをスクリーンセーバ化する実験をしました。
必要なものは
- Ruby
- Tiger
- Quartz Composer

rss/maker
RDFを生成するスクリプト。
箇条書きしか扱えないTiny Tiny RDを読んでRSSっぽいのを出力する習作。
Tiny RDの例
= Tiny RDについて * 箇条書き * 箇条書き * 箇条書き
まあ、こんな感じ。
# rss_maker.rb
require 'rss/maker'
class TinyRD
include Enumerable
def initialize(str)
@src = str
@slide = []
make_slide
end
attr_reader :slide
def make_slide
@src.each do |line|
line = line.chomp
if /^=+?s*(?S.*)/ =~ line
add_page($1)
elsif /^(?*?s*)?(?S.*)/ =~ line
add_item($2)
end
end
end
def add_page(title)
@slide.push([title, ""])
end
def add_item(desc)
@slide[-1][1].concat('<p>' + desc + '</p>')
end
def each(&block)
@slide.each(&block)
end
end
def make_rss(slide)
RSS::Maker.make('1.0') do |maker|
maker.channel.about = 'http://www.druby.org/fake_index.rdf'
maker.channel.title = 'I like Ruby.'
maker.channel.description = 'fake'
maker.channel.link = 'http://www.druby.org'
slide.each_with_index do |page, index|
item = maker.items.new_item
item.link = 'http://www.druby.org/fake/' + index.to_s
item.title = page[0]
item.description = page[1]
item.date = Time.now - 3600 * index
end
end
end
t = TinyRD.new($<.read)
puts make_rss(t)
qtz
Quartz Composerで"Mac OS X RSS Screen Saver"プロジェクトを生成します。 んで、"RSS Feed"パッチのInput ParametersのURIを適切に設定するとさっき作った RDFを表示することができます。
例


参考資料
- 未来派図画工作
- 飛び交う幸福の王子本の元ネタはここから。



