package Ġcom . chr yn an . strings . creator . output . kotlin Ċ Ċ import Ġcom . chr yn an . strings . creator . core . StringType Ċ import Ġcom . chr yn an . strings . accessor . Strings Ċ import Ġcom . chr yn an . strings . core .* Ċ import Ġcom . chr yn an . strings . creator . core . StringType File Output Ċ Ċ /** Ċ Ġ* ĠA Ġ[ Kotlin File Producer ] Ġthat Ġcreates Ġa ĠKotlin Ġfile Ġ[ String ] Ġwith Ġextension Ġfunctions Ċ Ġ* Ġon Ġthe Ġ[ Strings ] Ġobject Ġfor Ġconvenient ly Ġaccessing Ġ[ String ] Ġvalues . ĠFor Ġinstance , Ġif Ġa Ċ Ġ* Ġprovided Ġ[ StringType ] Ġis Ġa Ġ[ StringType . Dynamic ] Ġinstance , Ġthen Ġan Ġextension Ġfunction Ġwill Ċ Ġ* Ġbe Ġcreated Ġwith Ġtyped Ġparameters Ġfor Ġthe Ġ[ StringType . Dynamic ] Ġvalue 's Ġarguments . Ċ Ġ*/ Ċ class ĠKotlin String Extension Producer ( private Ġval Ġstring Argument Manager : ĠString Argument Manager ) Ġ: ĠKotlin File Producer Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġproduce ( input : ĠKotlin File Producer Input ): ĠString Type File Output Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġextension Functions Ġ= Ġinput . types . join ToString ( separator Ġ= Ġ"\ n \ n ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Type . Static Ġ-> Ġcreate Static String Extension ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Type . Array Ġ-> Ġcreate String Array Extension ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Type . Dynamic Ġ-> Ġcreate Dynamic String Extension ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Type . Html Ġ-> Ġcreate Html String Extension ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠString Type . Pl urals Ġ-> Ġcreate Pl ural String Extension ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġ""" ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġpackage Ġ${ input . packageName } ĊĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġimport Ġcom . chr yn an . strings . core . Resource ID ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġimport Ġcom . chr yn an . strings . core . Static String Resource ID ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġimport Ġcom . chr yn an . strings . core . Dynamic String Resource ID ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġimport Ġcom . chr yn an . strings . core . Html String Resource ID ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġimport Ġcom . chr yn an . strings . core . Pl ural String Resource ID ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġimport Ġcom . chr yn an . strings . core . String Array Resource ID ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġimport Ġcom . chr yn an . strings . accessor . Strings ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġimport Ġcom . chr yn an . strings . core . Locale ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġimport Ġcom . chr yn an . strings . core . Quantity ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ$ extension Functions ĊĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠString Type File Output ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfileName Ġ= Ġ" Kotlin String Extensions . kt ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile Text Ġ= Ġtext ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Static String Extension ( type : ĠString Type . Static ): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġinline Ġfun ĠStrings .${ type . name }( locale : ĠString Ġ= ĠLocale . default ): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ ĠStrings . get Static String ( resource ID Ġ= ĠString Res ID .${ type . name }, Ġlocale Ġ= Ġlocale ) ĊĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĊĠĠĠ Ġprivate Ġfun Ġcreate String Array Extension ( type : ĠString Type . Array ): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġinline Ġfun ĠStrings .${ type . name }( locale : ĠString Ġ= ĠLocale . default ): ĠArray < String > Ġ= ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ ĠStrings . getString Array ( resource ID Ġ= ĠString Res ID .${ type . name }, Ġlocale Ġ= Ġlocale ) ĊĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Dynamic String Extension ( type : ĠString Type . Dynamic ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġstring Argument Manager . parse ( input Ġ= Ġtype . value ) ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġresult . arguments . distinct By Ġ{ Ġit . number Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġused Names Ġ= Ġmutable Set Of < String >() ĊĠĠĠĠĠĠĠ Ġval Ġparameters Ġ= Ġmutable Set Of < String >() ĊĊĠĠĠĠĠĠĠ Ġval Ġargument Names Ġ= Ġarguments . join ToString ( separator Ġ= Ġ", Ġ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġif Ġ( used Names . contains ( it . name )) Ġ"${ it . name }${ it . number }" Ġelse Ġit . name ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġused Names . add ( name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameters . add ("$ name : Ġ${ it . type }") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġname ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġall Parameters Ġ= Ġparameters . join ToString ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseparator Ġ= Ġ", Ġ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefix Ġ= Ġ" locale : ĠString Ġ= ĠLocale . default " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ""" ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġinline Ġfun ĠStrings .${ type . name } ($ all Parameters ): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ ĠStrings . get Dynamic String ( resource ID Ġ= ĠString Res ID .${ type . name }, Ġlocale Ġ= Ġlocale , Ġ$ argument Names ) ĊĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Html String Extension ( type : ĠString Type . Html ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġstring Argument Manager . parse ( input Ġ= Ġtype . value ) ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġresult . arguments . distinct By Ġ{ Ġit . number Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġused Names Ġ= Ġmutable Set Of < String >() ĊĠĠĠĠĠĠĠ Ġval Ġparameters Ġ= Ġmutable Set Of < String >() ĊĊĠĠĠĠĠĠĠ Ġval Ġargument Names Ġ= Ġarguments . join ToString ( separator Ġ= Ġ", Ġ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġif Ġ( used Names . contains ( it . name )) Ġ"${ it . name }${ it . number }" Ġelse Ġit . name ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġused Names . add ( name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameters . add ("$ name : Ġ${ it . type }") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġname ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġall Parameters Ġ= Ġparameters . join ToString ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseparator Ġ= Ġ", Ġ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefix Ġ= Ġ" locale : ĠString Ġ= ĠLocale . default " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ""" ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġinline Ġfun ĠStrings .${ type . name } ($ all Parameters ): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ ĠStrings . get Html String ( resource ID Ġ= ĠString Res ID .${ type . name }, Ġlocale Ġ= Ġlocale , Ġ$ argument Names ) ĊĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Pl ural String Extension ( type : ĠString Type . Pl urals ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġstring Argument Manager . parse ( input Ġ= Ġtype . values . first (). value ) ĊĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġresult . arguments . distinct By Ġ{ Ġit . number Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġused Names Ġ= Ġmutable Set Of < String >() ĊĠĠĠĠĠĠĠ Ġval Ġparameters Ġ= Ġmutable Set Of < String >() ĊĊĠĠĠĠĠĠĠ Ġval Ġargument Names Ġ= Ġarguments . join ToString ( separator Ġ= Ġ", Ġ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġif Ġ( used Names . contains ( it . name )) Ġ"${ it . name }${ it . number }" Ġelse Ġit . name ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġused Names . add ( name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameters . add ("$ name : Ġ${ it . type }") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġname ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġall Parameters Ġ= Ġparameters . join ToString ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġseparator Ġ= Ġ", Ġ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprefix Ġ= Ġ" locale : ĠString Ġ= ĠLocale . default , Ġquantity : ĠQuantity ," ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ""" ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġinline Ġfun ĠStrings .${ type . name } ($ all Parameters ): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠ ĠStrings . get Pl ural String ( resource ID Ġ= ĠString Res ID .${ type . name }, Ġlocale Ġ= Ġlocale , Ġquantity Ġ= Ġquantity , Ġ$ argument Names ) ĊĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠ Ġ} Ċ } Ċ