/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 0 8 - 2 0 1 8 ĠHa ul mont . Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . ha ul mont . cli . core Ċ Ċ import Ġjava . util .* Ċ import Ġkotlin . properties . ReadOnly Property Ċ import Ġkotlin . reflect . K Property Ċ Ċ /** Ċ Ġ* ĠClass Ġto Ġread Ġ. properties Ġfiles . Ċ Ġ*/ Ċ class ĠMessages ( clazz : ĠClass <* >, Ġmessages FileName : ĠString Ġ= Ġ" messages . properties ") Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġproperties : ĠProperties Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġmessages FileName . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! endsWith (". properties ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ġ+ Ġ". properties " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġthis ĊĠĠĠĠĠĠĠ Ġ}. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclazz . getResource ( it )?. open Stream ()?. reader () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠRuntimeException (" Unable Ġto Ġfind Ġmessages Ġfile Ġ$ messages FileName Ġfor Ġ$ clazz ") ĊĠĠĠĠĠĠĠ Ġ}. let Ġ{ Ġreader Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProperties (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload ( reader ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetMessage ( name : ĠString ) Ġ= Ġproperties . getProperty ( name ) Ġ?: Ġ"" ĊĊĠĠĠ Ġfun ĠgetMessage ( name : ĠString , Ġvar arg Ġargs : ĠAny ) Ġ= Ġproperties . getProperty ( name )?. format (* args ) Ġ?: Ġ"" ĊĊĠĠĠ Ġoperator Ġfun Ġget ( name : ĠString ): ĠString Ġ= ĠgetMessage ( name ) ĊĊĠĠĠ Ġoperator Ġfun Ġget ( name : ĠString , Ġvar arg Ġargs : ĠAny ): ĠString Ġ= ĠgetMessage ( name , Ġ* args ) Ċ } Ċ Ċ fun Ġlocal Messages (): ĠReadOnly Property < Any , ĠMessages > Ġ= Ġobject Ġ: ĠReadOnly Property < Any , ĠMessages > Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠgetValue ( this Ref : ĠAny , Ġproperty : ĠK Property <* >) Ġ= ĠMessages ( this Ref . java Class ) Ċ }