/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠPaul ĠR y bits ky i , Ġpa ul . ry bits ky i . work @ gmail . com Ċ Ġ* Ċ Ġ* Ġ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 . paul ry bits ky i . h ilt binder . processor . generator . content . kotlin Ċ Ċ import Ġcom . paul ry bits ky i . h ilt binder . processor . generator . content . Module FileContent Generator Ċ import Ġcom . paul ry bits ky i . h ilt binder . processor . generator . content . utils . add New line Character After Comment Ċ import Ġcom . paul ry bits ky i . h ilt binder . processor . generator . content . utils . remove Trailing New line Ċ import Ġcom . paul ry bits ky i . h ilt binder . processor . model . Module Schema Ċ import Ġcom . paul ry bits ky i . h ilt binder . processor . utils . BIND _ TYPE _ SIMPLE _ NAME Ċ import Ġcom . squareup . kotlin po et . File Spec Ċ import Ġcom . squareup . kotlin po et . Type Spec Ċ Ċ internal Ġclass ĠKotlin Module FileContent Generator ( ĊĠĠĠ Ġprivate Ġval Ġtype Spec Factory : ĠKotlin Type Spec Factory Ċ ) Ġ: ĠModule FileContent Generator Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġgenerate FileContent ( module Schema : ĠModule Schema ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtype Spec Ġ= Ġtype Spec Factory . create Type Spec ( module Schema ) ĊĠĠĠĠĠĠĠ Ġval Ġkotlin File Ġ= Ġtype Spec . generate Kotlin File ( module Schema ) ĊĠĠĠĠĠĠĠ Ġval Ġkotlin Code Ġ= Ġkotlin File . toString (). re format Kotlin Code () ĊĊĠĠĠĠĠĠĠ Ġreturn Ġkotlin Code ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠType Spec . generate Kotlin File ( module Schema : ĠModule Schema ): ĠFile Spec Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠFile Spec . builder ( module Schema . packageName , Ġmodule Schema . interface Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Comment (" Generated Ġby Ġ@$ BIND _ TYPE _ SIMPLE _ NAME . ĠDo Ġnot Ġmodify !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Type ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠString . re format Kotlin Code (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġadd New line Character After Comment () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. remove Public Keyword From Methods () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. re format Line Break s For Long Method Names () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. remove Trailing New line () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠString . remove Public Keyword From Methods (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġreplace (" public ( Ġ|\ n ĠĠĠĠĠ Ġ) ". to Regex (), Ġ"") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠString . re format Line Break s For Long Method Names (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġreplace ("\\ ( binding : Ġ( \\ w +) \\ ):\ n ĠĠĠĠĠ Ġ". to Regex ()) Ġ{ Ġmatch Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠApp arent ly , Ġ[ 0 ] Ġgroup Ġis Ġalways Ġthe Ġentire Ġexpression . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThat 's Ġwhy Ġ[ 1 ] Ġgroup Ġis Ġused Ġhere Ġto Ġgrab Ġthe Ġbinding Ġtype . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" (\ n ĠĠĠĠĠ Ġbinding : Ġ${ match . group Values [ 1 ]} ): Ġ" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ