package Ġcom . example . ktor . plugins Ċ Ċ import Ġio . ktor . velocity .* Ċ import Ġorg . apache . velocity . runtime . resource . loader . Classpath Resource Loader Ċ import Ġorg . apache . velocity . runtime . Runtime Constants Ċ Ċ import Ġio . ktor . thy me leaf . Th y me leaf Ċ import Ġio . ktor . thy me leaf . Th y me leaf Content Ċ import Ġorg . thy me leaf . temp later es olver . ClassLoader Template Resolver Ċ import Ġcom . github . must ache java . Default Must ache Factory Ċ import Ġio . ktor . must ache . Must ache Ċ import Ġio . ktor . must ache . Must ache Content Ċ import Ġio . ktor . html .* Ċ import Ġkotlinx . html .* Ċ import Ġfre emark er . cache .* Ċ import Ġio . ktor . fre emark er .* Ċ import Ġkotlinx . css .* Ċ import Ġio . ktor . http .* Ċ import Ġio . ktor . application .* Ċ import Ġio . ktor . response .* Ċ import Ġio . ktor . request .* Ċ import Ġio . ktor . routing .* Ċ Ċ fun ĠApplication . configure Temp lating () Ġ{ ĊĠĠĠ Ġinstall ( Velocity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Property ( Runtime Constants . RESOURCE _ LOAD ER , Ġ" classpath ") ĊĠĠĠĠĠĠĠ Ġset Property (" classpath . resource . loader . class ", ĠClass path Resource Loader :: class . java . name ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġinstall ( Th y me leaf ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Template Resolver ( ClassLoader Template Resolver (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefix Ġ= Ġ" templates / thy me leaf /" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuffix Ġ= Ġ". html " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcharacter Encoding Ġ= Ġ" utf - 8 " ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĠĠĠ Ġinstall ( Must ache ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmust ache Factory Ġ= ĠDefault Must ache Factory (" templates / must ache ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinstall ( Free Marker ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtemplate Loader Ġ= ĠClass Template Loader ( this :: class . java . class Loader , Ġ" templates ") ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġrouting Ġ{ ĊĠĠĠĠĠĠĠ Ġget ("/ index ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsample User Ġ= ĠUser ( 1 , Ġ" John ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( Velocity Content (" templates / index . vl ", Ġmap Of (" user " Ġto Ġsample User ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġget ("/ html - thy me leaf ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( Th y me leaf Content (" index ", Ġmap Of (" user " Ġto ĠTh y me leaf User ( 1 , Ġ" user 1 ")) )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġget ("/ html - must ache ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( Must ache Content (" index . h bs ", Ġmap Of (" user " Ġto ĠMust ache User ( 1 , Ġ" user 1 ")) )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġget ("/ html - dsl ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond Html Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh 1 Ġ{ Ġ+" HTML " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġul Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( n Ġin Ġ 1 .. 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġli Ġ{ Ġ+ "$ n " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġget ("/ html - fre emark er ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond ( Free Marker Content (" index . ft l ", Ġmap Of (" data " Ġto ĠIndex Data ( listOf ( 1 , Ġ 2 , Ġ 3 ))), Ġ"")) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġget ("/ styles . css ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond Css Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠColor . dark Blue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmargin ( 0 . px ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrule (" h 1 . page - title ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor . white ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġget ("/ html - css - dsl ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond Html Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhead Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlink ( rel Ġ= Ġ" stylesheet ", Ġhref Ġ= Ġ"/ styles . css ", Ġtype Ġ= Ġ" text / css ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbody Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh 1 ( classes Ġ= Ġ" page - title ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+" Hello Ġfrom ĠK tor !" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠUser ( val Ġid : ĠInt , Ġval Ġname : ĠString ) Ċ data Ġclass ĠTh y me leaf User ( val Ġid : ĠInt , Ġval Ġname : ĠString ) Ċ data Ġclass ĠMust ache User ( val Ġid : ĠInt , Ġval Ġname : ĠString ) Ċ data Ġclass ĠIndex Data ( val Ġitems : ĠList < Int >) Ċ Ċ suspend Ġinline Ġfun ĠApplication Call . respond Css ( builder : ĠCSS Builder . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġthis . respond Text ( CSS Builder (). apply ( builder ). toString (), ĠContentType . Text . CSS ) Ċ } ĊĊ