package Ġbasics . syntax ĊĊ Ċ // ĊĊ Ċ // ĊĊ Ċ // ĊĊ Ċ // ĊĊ Ċ // ĊĊ Ċ // ĊĊ Ċ // ĊĊ Ċ // ĊĊ Ċ // ĊĊ Ċ // ĊĊ Ċ fun Ġhtml ( block : ĠHtml . () Ġ-> ĠUnit ): ĠString Ġ{ ĊĠ Ġval Ġbuilder Ġ= ĠStringBuilder () ĊĠ Ġbuilder . with Tag (" html ") Ġ{ ĠHtml ( builder ). block () Ġ} ĊĠ Ġreturn Ġbuilder . toString () Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠ Ġval Ġhtml Ġ= Ġhtml Ġ{ ĊĠĠĠ Ġhead Ġ{} ĊĠĠĠ Ġbody Ġ{ ĊĠĠĠĠĠ Ġtable Ġ{ ĊĠĠĠĠĠĠĠ Ġtr Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġ// Ġloops ! ĊĠĠĠĠĠĠĠĠĠ Ġrepeat ( 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtd Ġ{} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĠ Ġprintln ( html ) Ċ } ĊĊ Ċ // ĊĊ Ċ // ĊĊ Ċ // ĊĊ Ċ // ĊĊ Ċ // ĊĊ Ċ // ĊĊ Ċ // ĊĊ Ċ // ĊĊ Ċ // ĊĊ Ċ // ĊĊ Ċ @ Dsl Marker Ċ annotation Ġclass ĠHtml Dsl Ċ Ċ @ Html Dsl Ċ class ĠHtml ( ĊĠ Ġprivate Ġval Ġbuilder : ĠStringBuilder Ċ ) Ġ{ ĊĠ Ġfun Ġhead ( block : ĠHead . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġbuilder . with Tag (" head ") Ġ{ ĠHead ( builder ). block () Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġbody ( block : ĠBody . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġbuilder . with Tag (" body ") Ġ{ ĠBody ( builder ). block () Ġ} ĊĠ Ġ} Ċ } Ċ Ċ @ Html Dsl Ċ class ĠHead ( ĊĠ Ġprivate Ġval Ġbuilder : ĠStringBuilder Ċ ) Ċ Ċ @ Html Dsl Ċ class ĠBody ( ĊĠ Ġprivate Ġval Ġbuilder : ĠStringBuilder Ċ ) Ġ{ ĊĠ Ġfun Ġtable ( block : ĠTable . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġbuilder . with Tag (" table ") Ġ{ ĠTable ( builder ). block () Ġ} ĊĠ Ġ} Ċ } Ċ Ċ @ Html Dsl Ċ class ĠTable ( ĊĠ Ġprivate Ġval Ġbuilder : ĠStringBuilder Ċ ) Ġ{ ĊĠ Ġfun Ġtr ( block : ĠTr . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġbuilder . with Tag (" tr ") Ġ{ ĠTr ( builder ). block () Ġ} ĊĠ Ġ} Ċ } Ċ Ċ @ Html Dsl Ċ class ĠTr ( ĊĠ Ġprivate Ġval Ġbuilder : ĠStringBuilder Ċ ) Ġ{ ĊĠ Ġfun Ġtd ( block : ĠT d . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġbuilder . with Tag (" td ") Ġ{ ĠT d ( builder ). block () Ġ} ĊĠ Ġ} Ċ } Ċ Ċ @ Html Dsl Ċ class ĠT d ( ĊĠ Ġprivate Ġval Ġbuilder : ĠStringBuilder Ċ ) Ċ Ċ inline Ġfun ĠStringBuilder . with Tag ( tag : ĠString , Ġblock : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠ Ġappend ("< $ tag >\ n ") ĊĠ Ġblock () ĊĠ Ġappend ("</ $ tag >\ n ") Ċ } Ċ