カスタムタグの作り方
http://www.ibm.com/developerworks/jp/java/library/j-grails03118/ からメモ
前準備
grails create-tag-lib Date ls -la ./grails-app/taglib/DateTagLib.groovy ./test/integration/DateTagLibTests.groovy
ソース書き書き
vim ./grails-app/taglib/DateTagLib.groovy
class DateTagLib { def thisYear = { out << Calendar.getInstance().get(Calendar.YEAR) } }
<g:thisYear />
テストコード書き書き
vim ./test/integration/DateTagLibTests.groovy
class DateTagLibTests extends GroovyTestCase { def dateTagLib void setUp() { dateTagLib = new DateTagLib() } void testThisYear() { String expected = Calendar.getInstance().get(Calendar.YEAR) assertEquals("the years don't match", exptected, dateTagLib.thisYear()) } }
テスト実行
grails test-app
高度なカスタムタグ
class DateTagLib { def thisYear = { out << Calendar.getInstance().get(Calendar.YEAR) } def copyright = { attrs, body -> out << "<div id='copyright'>" out << "© ${attrs['startYear']} - ${thisYear()}, ${body()}" out << " All Rights Reserved." out << "</div>" } }
<g:copyright startYear="2002">FakeCo Inc.</g:copyright>
記事が書かれた時(1.0)と今(1.0.4)で、テスト用のコード置き場が変わってるかも(./grails-app/test → ./test )