GaucheでRSSの生成

Sep 15, 2010   #gauche  #Lisp  :

前回までのところでは、「なんかリストを作るのが面倒くさいなぁ」と思ったのだが、よく考えたら quasi-quote を使えば問題ないことに気づく。こんな感じ:

(use sxml.serializer)
(define gen-rss
`(*TOP*
(*PI* xml "version=\"1.0\" encoding=\"UTF-8\"")
(rss (@ (version "2.0"))
,channel-example)))
(define channel-example
`(channel
(title "foobar")
(link "http://kazu634.tumblr.com/")
(description "Tumblr")
(lastBuildDate "Fri, 20 Jul 2007 19:00:00 +0900")
,items-example))
(define items-example
`(item (title "Post01")
(link "http://kazu634.tumblr.com/01")
(pubDate "Fri, 20 Jul 2007 19:00:00 +0900")))

実行例はこんな感じになる:

gosh>(print (srl:sxml->xml gen-rss))
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title>foobar</title>
<link>http://kazu634.tumblr.com/</link>
<description>Tumblr</description>
<lastBuildDate>Fri, 20 Jul 2007 19:00:00 +0900</lastBuildDate>
<item>
<title>Post01</title>
<link>http://kazu634.tumblr.com/01</link>
<pubDate>Fri, 20 Jul 2007 19:00:00 +0900</pubDate>
</item>
</channel>
</rss>
#<undef>

なんだ簡単そうだぞ。

プログラミングGauche

プログラミングGauche