Hatena::Groupgroovy

けみかるGroovy日記

2009-08-02

twitter4j+Groovyテンプレートエンジンを試しに使ってみた。

| 23:59

試しにやってみました。投稿テストも兼ねて載せてみる。

/**
 * twitter4j+Groovy のサンプル.
 *
 * requires twitter4j
 * @author tmftake
 */

import twitter4j.*
import groovy.text.Template
import groovy.text.SimpleTemplateEngine
import java.io.File

Twitter twitter = new Twitter(TWITTER_ID, TWITTER_PW);
Paging paging = new Paging(1, 100);
List<Status> statuses = twitter.getUserTimeline(paging);

fle = new File("twittertl.tmpl")
def binding = ["statuses": statuses]
engine = new SimpleTemplateEngine()
template = engine.createTemplate(fle).make(binding)

println template.toString()

twittertl.tmpl

<table width="600">
<tbody>
<% statuses.each { %>
<tr>
	<td>${it.getCreatedAt()}</td>
	<td>${it.getText()}</td>
	<td><a href="http://twitter.com/${it.getUser().getScreenName()}/statuses/${it.getId()}">link</a></td>
</tr>
<% } %>
</tbody>
</table>

以下の部分が、LinkedHashMapをbindingクラスにキャストできないよーと怒られてました。で、defつけたら動きました。なんでだろう。

binding = ["statuses": statuses]

fumokmmfumokmm2009/08/04 06:47おお!よさ気ですね。
やっぱりGroovyは軽量にかけて素敵。
bindingについてはちょっと考察してみました。
>> http://groovy.g.hatena.ne.jp/fumokmm/20090804/1249335906

tmftaketmftake2009/08/05 18:35シンプルに書けて良い感じですね。
Groovyテンプレートエンジンって、Smartyのmodifier(表示用の文字列変換などをやってくれる)のような仕組み、あるのかな。調べてみます。