/* Ċ Ġ* ĠPermissions Ex Ċ Ġ* ĠCopyright Ġ( C ) Ġz ml Ġand ĠPermissions Ex Ġcontributors Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġca . stell ard rift . permission sex . util Ċ Ċ import Ġca . stell ard rift . permission sex . commands . Messages Ċ import Ġca . stell ard rift . permission sex . context . Context Value Ċ import Ġjava . text . Message Format Ċ import Ġjava . util . Locale Ċ import Ġjava . util . ResourceBundle Ċ import Ġnet . ky ori . text . Build able Component Ċ import Ġnet . ky ori . text . Component Ċ import Ġnet . ky ori . text . Component Builder Ċ import Ġnet . ky ori . text . Scoped Component Ċ import Ġnet . ky ori . text . Text Component Ċ import Ġnet . ky ori . text . Text Component . space Ċ import Ġnet . ky ori . text . format . Style Ċ import Ġnet . ky ori . text . format . TextColor Ċ import Ġnet . ky ori . text . format . Text Decoration Ċ import Ġnet . ky ori . text . renderer . Trans latable Component Renderer Ċ Ċ fun ĠAny ?. to Component (): ĠComponent Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠComponent Builder < *, Ġ*> Ġ-> Ġthis . build () ĊĠĠĠĠĠĠĠ Ġis ĠComponent Ġ-> Ġthis ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠText Component . of ( toString ()) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠBoolean . to Component (): ĠComponent Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMessages . FORMAT TER _ BOOLEAN _ TRUE . get (). color ( TextColor . GREEN ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠMessages . FORMAT TER _ BOOLEAN _ FALSE . get (). color ( TextColor . RED ) ĊĠĠĠ Ġ}. build () Ċ } Ċ fun ĠBoolean . unary Plus () Ġ= Ġthis . to Component () Ċ Ċ fun ĠString . to Component () Ġ= ĠText Component . of ( this ) Ċ operator Ġfun ĠString . unary Plus () Ġ= ĠText Component . of ( this ) Ċ operator Ġfun ĠString . unary Minus () Ġ= ĠText Component . builder ( this ) Ċ Ċ infix Ġfun ĠString . colored ( color : ĠText Color ) Ġ= ĠText Component . of ( this , Ġcolor ) Ċ infix Ġfun ĠString . decor ated ( decoration : ĠText Decoration ) Ġ= ĠText Component . of ( this , ĠStyle . of ( decoration )) Ċ Ċ fun Ġstyle ( color : ĠText Color ? Ġ= Ġnull , Ġvar arg Ġdecoration : ĠText Decoration Ġ= ĠarrayOf ()) Ġ= ĠStyle . of ( color , Ġ* decoration ) Ċ fun Ġcomponent ( init : ĠText Component . Builder . () Ġ-> ĠUnit ) Ġ= ĠText Component . make ( init ) Ċ operator Ġfun Ġ< C Ġ: ĠBuild able Component < C , ĠB >, ĠB Ġ: ĠComponent Builder < C , ĠB >> ĠB . invoke ( init : ĠB . () Ġ-> ĠUnit ): ĠC Ġ{ ĊĠĠĠ Ġinit () ĊĠĠĠ Ġreturn Ġbuild () Ċ } Ċ Ċ operator Ġfun ĠComponent . plus ( other : ĠComponent ) Ġ= ĠText Component . builder () ĊĠĠĠ Ġ. append ( this ) ĊĠĠĠ Ġ. append ( other ) ĊĠĠĠ Ġ. build () Ċ Ċ operator Ġfun ĠComponent . plus ( other : ĠComponent Builder < *, Ġ* >) Ġ= Ġthis Ġ+ Ġother . build () Ċ Ċ infix Ġfun ĠComponent . colored If Ne cessary ( color : ĠText Color ) Ġ= ĊĠĠĠ Ġif Ġ( this . color () Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcolor ( color ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġthis ĊĠĠĠ Ġ} Ċ Ċ infix Ġfun Ġ< C Ġ: ĠScoped Component < C >> ĠC . colored If Ne cessary ( color : ĠText Color ) Ġ= ĊĠĠĠ Ġif Ġ( this . color () Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcolor ( color ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġthis ĊĠĠĠ Ġ} Ċ Ċ fun ĠComponent . styled ( init : ĠStyle . Builder . () Ġ-> ĠUnit ): ĠComponent Ġ{ ĊĠĠĠ Ġval Ġbuild Ġ= ĠStyle . builder () ĊĠĠĠ Ġbuild . merge ( this . style ()) ĊĠĠĠ Ġbuild . init () ĊĠĠĠ Ġreturn Ġthis . style ( build ) Ċ } Ċ Ċ fun ĠIterable < Any >. join ( separator : ĠComponent ? Ġ= Ġspace ()): ĠComponent Ġ= Ġcomponent Ġ{ ĊĠĠĠ Ġval Ġit Ġ= Ġiterator () ĊĠĠĠ Ġwhile Ġ( it . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġappend ( it . next (). to Component ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( separator Ġ!= Ġnull Ġ&& Ġit . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( separator ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠSequence < Component >. join ( separator : ĠComponent ? Ġ= Ġspace ()) Ġ= Ġcomponent Ġ{ ĊĠĠĠ Ġval Ġit Ġ= Ġiterator () ĊĠĠĠ Ġwhile Ġ( it . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġappend ( it . next ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( separator Ġ!= Ġnull Ġ&& Ġit . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( separator ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġ} Ċ Ċ operator Ġfun Ġ< C Ġ: ĠBuild able Component < C , ĠB >, ĠB Ġ: ĠComponent Builder < C , ĠB >> ĠB . plus Assign ( other : ĠComponent ) Ġ{ ĊĠĠĠ Ġthis . append ( other ) Ċ } Ċ Ċ operator Ġfun Ġ< C Ġ: ĠBuild able Component < C , ĠB >, ĠB Ġ: ĠComponent Builder < C , ĠB >> ĠB . plus Assign ( other : ĠComponent Builder < *, Ġ* >) Ġ{ ĊĠĠĠ Ġthis . append ( other ) Ċ } Ċ Ċ operator Ġfun Ġ< C Ġ: ĠBuild able Component < C , ĠB >, ĠB Ġ: ĠComponent Builder < C , ĠB >> ĠB . plus Assign ( other : ĠIterable < Component >) Ġ{ ĊĠĠĠ Ġthis . append ( other ) Ċ } Ċ Ċ // Ġ-- ĠP EX - Specific Ċ Ċ fun ĠSet < Context Value <* >> . to Component (): ĠComponent Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠMessages . COMMON _ ARGS _ CONTEXT _ GLOBAL () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġ+ toString () ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠP EX Component Renderer Ġ: ĠTrans latable Component Renderer < Locale >() Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġtranslation ( context : ĠLocale , Ġkey : ĠString ): ĠMessage Format Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġidx Ġ= Ġkey . indexOf ("/") ĊĠĠĠĠĠĠĠ Ġif Ġ( idx Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMessage Format ( key ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġbundle Ġ= Ġkey . substring ( 0 , Ġidx ) ĊĠĠĠĠĠĠĠ Ġval Ġresource Ġ= Ġkey . substring ( idx Ġ+ Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= ĠResource Bundle . get Bundle ( bundle , Ġcontext ). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( containsKey ( resource )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetString ( resource ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresource ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠMessage Format ( message ) ĊĠĠĠ Ġ} Ċ } Ċ