タイトルにあるとおり、 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