package Ġio . j va as . dsl . html Ċ Ċ import Ġio . j va as . dsl . html . element . DIV Ċ import Ġorg . junit . Test Ċ import Ġjavax . management . Query . div Ċ import Ġkotlin . test . assertEquals Ċ Ċ class ĠCustom Components Ġ{ ĊĊ ĉ @ Test Ċ ĉ fun Ġtest Custom Component Via Class Extension () Ġ{ Ċĉ ĉ assertEquals ( ĊĊĉĉ ĉ """ Ċĉĉĉ ĉ < blah > Ċĉĉĉĉ ĉ < div > Ċĉĉĉĉ ĉ </ div > Ċĉĉĉ ĉ </ blah > Ċĉĉ ĉ """. trim Indent (). trim (), ĊĊĉĉ ĉ BL AH 3 () Ġ{ Ċĉĉĉ ĉ div Ġ{ ĊĊĉĉĉ ĉ } Ċĉĉ ĉ }. toString () ĊĊĉ ĉ ) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġtest Custom Component Via Extension Methods () Ġ{ Ċĉ ĉ assertEquals ( ĊĊĉĉ ĉ """ Ċĉĉĉ ĉ < div Ġclass =" test 1 "> Ċĉĉĉĉ ĉ < blah Ġclass =" test 2 "> Ċĉĉĉĉĉ ĉ TEST Ċĉĉĉĉ ĉ </ blah > Ċĉĉĉ ĉ </ div > Ċĉĉ ĉ """. trim Indent (). trim (), ĊĊĉĉ ĉ DIV ( classes Ġ= Ġ" test 1 ") Ġ{ Ċĉĉĉ ĉ blah 1 ( classes Ġ= Ġ" test 2 ") Ġ{ Ċĉĉĉĉ ĉ +" TEST " Ċĉĉĉ ĉ } Ċĉĉ ĉ }. toString () ĊĊĉ ĉ ) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġtest Custom Self Closing Component Via Extension Methods () Ġ{ Ċĉ ĉ assertEquals ( ĊĊĉĉ ĉ """ Ċĉĉĉ ĉ < div Ġclass =" test 1 "> Ċĉĉĉĉ ĉ < blah Ġclass =" test 2 " Ġ/> Ċĉĉĉ ĉ </ div > Ċĉĉ ĉ """. trim Indent (). trim (), ĊĊĉĉ ĉ DIV ( classes Ġ= Ġ" test 1 ") Ġ{ Ċĉĉĉ ĉ blah 2 ( classes Ġ= Ġ" test 2 ") Ċĉĉ ĉ }. toString () ĊĊĉ ĉ ) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġtest Resources () Ġ{ Ċĉ ĉ val Ġdiv Ġ= ĠDIV ( classes Ġ Ġ= Ġ" div ") ĉ { Ċĉĉ ĉ this . resources Ġ= Ġmutable ListOf () Ċĉĉ ĉ div Ġ{ Ċĉĉĉ ĉ div Ġ{ Ċĉĉĉĉ ĉ blah 1 Ġ{ Ġ} Ċĉĉĉĉ ĉ blah 2 () Ċĉĉĉ ĉ } Ċĉĉĉ ĉ blah 2 () Ċĉĉ ĉ } Ċĉ ĉ } ĊĊĉ ĉ div . resources ?. forEach Ġ{ Ċĉĉ ĉ println ( it ) Ċĉ ĉ } Ċĉ ĉ assertEquals ( 3 , Ġdiv . resources ?. size ) ĊĊ ĉ } ĊĊĊĊ ĉ data Ġclass ĠCSS ( val Ġpath : ĠString ): ĠResource ĊĊ ĉ class ĠB LA H 1 ( Ċĉ ĉ init : Ġ( BL AH 1 . () Ġ-> ĠUnit )? Ġ= Ġnull Ċ ĉ ) Ġ: ĠTag ( Ċĉ ĉ tagName Ġ= Ġ" blah ", Ċĉ ĉ self Closing Ġ= Ġfalse Ċ ĉ ) ĊĊ ĉ class ĠB LA H 2 Ġ: ĠTag ( Ċĉ ĉ tagName Ġ= Ġ" blah ", Ċĉ ĉ self Closing Ġ= Ġtrue Ċ ĉ ) ĊĊ ĉ class ĠB LA H 3 ( Ċĉ ĉ init : Ġ( BL AH 3 . () Ġ-> ĠUnit )? Ġ= Ġnull Ċ ĉ ) Ġ: ĠDIV ( tagName Ġ= Ġ" blah ") Ġ{ Ċĉ ĉ init Ġ{ Ċĉĉ ĉ init ?. invoke ( this ) Ċĉ ĉ } Ċ ĉ } ĊĊ ĉ fun ĠDIV . blah 1 ( Ċĉ ĉ classes : ĠString ? Ġ= Ġnull , Ċĉ ĉ init : Ġ( BL AH 1 . () Ġ-> ĠUnit )? Ġ= Ġnull Ċ ĉ ) Ġ{ Ċĉ ĉ this . resources ?. add ( CSS ( path Ġ= Ġ" style 1 . css ")) Ċĉ ĉ this . children . add ( BL AH 1 (). apply Ġ{ Ċĉĉ ĉ classes ?. let Ġ{ Ċĉĉĉ ĉ this . attributes . put (" class ", Ġit ) Ċĉĉ ĉ } Ċĉĉ ĉ init ?. invoke ( this ) Ċĉ ĉ }) Ċ ĉ } ĊĊ ĉ fun ĠDIV . blah 2 ( classes : ĠString ? Ġ= Ġnull ) Ġ{ Ċĉ ĉ this . resources ?. add ( CSS ( path Ġ= Ġ" style 2 . css ")) Ċĉ ĉ this . children . add ( BL AH 2 (). apply Ġ{ Ċĉĉ ĉ classes ?. let Ġ{ Ċĉĉĉ ĉ this . attributes . put (" class ", Ġit ) Ċĉĉ ĉ } Ċĉ ĉ }) Ċ ĉ } ĊĊ Ċ } ĊĊĊĊĊ