タイトルにあるとおり、 Groovy でスライドショーできるツール、 G5 をリリースします(おそらくクリスマスまでには!)。インスパイアされたのが HTML/JavaScript/CSS でスライドショーする S5 と Clojure でスライドショーする L5 なので、 G5 と名づけました。ちなみに L5 の作者の深町さん("はてな"の人)はアリエル時代の同僚で、S5 より L5 を先に知りました。このツール、作ろうかなと思ってから1年くらい経っていて、今回の Advent Calendar のネタとしてようやく手を付けたので、まだ数時間しか費やせてません。完成度は察してください。
まずはシンプルな例です:
new g5.SlideBuilder()({s{b("Look Ma, one line!")}})()
これで次のようにスライドショーが開始されます。今のところ Apache FOP 純正の AWT renderer 使っているので見た目が懐かしい感じですが、それはそれ。
ファイルに出力したい時はこうします:
new g5.SlideBuilder()({s{b("Look Ma, one line!")}})('application/pdf','one-line.pdf')
こんな仕上がり:
もう少しまともな例として G5 の紹介用スライドを G5 で書きました(途中まで)。こちらはまずは出来上がりから:
このスライドは次のコードで動いています:
import g5.SlideBuilder
def slideBuilder = new SlideBuilder()
def name = {
def attrs = [color:'#3283A1']
slideBuilder.inline(it ? attrs + it : attrs, "G5")
}
def title = { slideBuilder.block 'font-size':'48pt', 'margin-bottom':'18pt', it }
def properNoun = { slideBuilder.inline 'font-style':'italic', "\"$it\"" }
def slides = slideBuilder 'font-family':'Verdana', {
slide {
title { inline "Introduction to "; name('font-size':'64pt') }
block "Nagai Masato"
block 'font-size':'16pt', color:'gray', {
block "Twitter: @nagai_masato"
block "Blog: http://nagaimasato.blogspot.com/"
}
}
slide {
title { inline "What is "; name(); inline "?" }
list 'font-size':'24pt', {
listItem {
image 'http://groovy.codehaus.org/images/groovy-logo-medium.png'
inline "Slideshow System"
}
listItem {
inline "Allows you to create and show slides using "; properNoun "Groovy"
}
listItem {
inline "Uses "; properNoun "XSL-FO"; inline " and "
properNoun "Apache FOP"; inline " for formatting slides"
}
}
}
}
slides.show()
別名を使えば短く書けます。お好みでどうぞ。
import g5.SlideBuilder
def sb = new SlideBuilder()
def nm = { def attrs = [color:'#3283A1']; sb.i(it ? attrs + it : attrs, "G5") }
def tt = { sb.b 'font-size':'48pt', 'margin-bottom':'18pt', it }
def pn = { sb.i 'font-style':'italic', "\"$it\"" }
def ss = sb 'font-family':'Verdana', {
s {
tt { i "Introduction to "; nm('font-size':'64pt') }
b "Nagai Masato"
b 'font-size':'16pt', color:'gray', {
b "Twitter: @nagai_masato"
b "Blog: http://nagaimasato.blogspot.com/"
}
}
s {
tt { i "What is "; nm(); i "?" }
ls 'font-size':'24pt', {
li {
im 'http://groovy.codehaus.org/images/groovy-logo-medium.png'
i "Slideshow System"
}
li { i "Allows you to create and show slides using "; pn "Groovy" }
li {
i "Uses "; pn "XSL-FO"; i " and "; pn "Apache FOP"
i " for formatting slides"
}
}
}
}
ss()
G5 は こちら で公開しています。まだ開発ブランチにソースがあるだけですけど。Groovy 使いのみなさん、リリースされたら勉強会とかで使ってください ;)
時間がないので今日はこのへんで。




No comments:
Post a Comment