package Ġio . openc ubes . db Ċ Ċ import Ġjava . util . function . Predicate Ċ import Ġkotlin . reflect . K Callable Ċ import Ġkotlin . reflect . K Property Ċ import Ġkotlin . reflect . jvm . is Accessible Ċ Ċ /** Ċ Ġ* ĠSplit Ġa Ġlist Ġon Ġa Ġspecific Ġitem . Ċ Ġ*/ Ċ fun Ġ< T > ĠIterable < T >. split ( item : ĠT ): ĠList < List < T >> Ġ= Ġsplit Ġ{ Ġit Ġ== Ġitem Ġ} Ċ Ċ /** Ċ Ġ* ĠSplit Ġlist Ġof Ġa Ġpredicate Ċ Ġ*/ Ċ fun Ġ< T > ĠIterable < T >. split ( predicate : Ġ( T ) Ġ-> ĠBoolean ): ĠList < List < T >> Ġ= Ġsplit ( Predicate ( predicate )) Ċ Ċ /** Ċ Ġ* ĠSplit Ġlist Ġof Ġa Ġpredicate Ċ Ġ*/ Ċ fun Ġ< T > ĠIterable < T >. split ( predicate : ĠPredicate < T >): ĠList < List < T >> Ġ{ ĊĠ Ġval Ġres Ġ= Ġmutable ListOf < Mutable List < T >>() ĊĠ Ġvar Ġindex Ġ= Ġ 0 ĊĠ Ġfor Ġ( current Ġin Ġthis ) Ġ{ ĊĠĠĠ Ġif Ġ( predicate . test ( current )) Ġ{ ĊĠĠĠĠĠ Ġindex ++ ĊĠĠĠĠĠ Ġcontinue ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( res . size Ġ== Ġindex ) Ġ{ ĊĠĠĠĠĠ Ġres . add ( index , Ġmutable ListOf ( current )) ĊĠĠĠĠĠ Ġcontinue ĊĠĠĠ Ġ} ĊĠĠĠ Ġres [ index ]. add ( current ) ĊĠ Ġ} ĊĠ Ġreturn Ġres Ċ } Ċ Ċ /** Ċ Ġ* ĠGet Ġthe Ġname Ġof Ġthe Ġenum Ġvalue Ġin Ġthe Ġdatabase . ĠFirst Ġtry Ġto Ġget Ġthe Ċ Ġ* Ġ[ SerializedName ] Ġannotation Ġvalue ; Ġif Ġnot Ġget Ġthe Ġname Ġof Ġthe Ġenum Ċ Ġ*/ Ċ fun Ġget Enum Name ( e : ĠEnum <* >) Ġ= Ġtry Ġ{ ĊĠ Ġe . java Class ĊĠĠĠ Ġ. getField ( e . name ) ĊĠĠĠ Ġ. getAnnotation ( SerializedName :: class . java ) ĊĠĠĠ Ġ? . value ĊĠĠĠ Ġ?: Ġe . name Ċ } Ġcatch Ġ( ignored : ĠNoSuch Field Exception ) Ġ{ ĊĠ Ġe . name Ċ } Ċ Ċ /** Ċ Ġ* ĠAll Ġfunctions Ġthat Ġtouch Ġthe Ġgeneral Ġconcept Ġof Ġwords . Ċ Ġ*/ Ċ object ĠWord s Ġ{ ĊĠ Ġprivate Ġconst Ġval Ġv ow els Ġ= Ġ" a ou Ã¥ e iy Ã¤ Ã¶ " ĊĠ Ġ/** ĊĠĠ Ġ* ĠPl ural ize Ġthe Ġword Ġspecified ĊĠĠ Ġ*/ ĊĠ Ġ@ Jvm Static ĊĠ Ġfun Ġplural ize ( word : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠ Ġword . endsWith (" ss ") Ġ-> Ġ"${ word } es " ĊĠĠĠĠĠ Ġword . endsWith (" s ") Ġ-> Ġ"${ word } es " ĊĠĠĠĠĠ Ġword . endsWith (" sh ") Ġ-> Ġ"${ word } es " ĊĠĠĠĠĠ Ġword . endsWith (" ch ") Ġ-> Ġ"${ word } es " ĊĠĠĠĠĠ Ġword . endsWith (" x ") Ġ-> Ġ"${ word } es " ĊĠĠĠĠĠ Ġword . endsWith (" z ") Ġ-> Ġ"${ word } es " ĊĠĠĠĠĠ Ġword . endsWith (" f ") Ġ-> Ġ"${ word . substring ( 0 , Ġword . last Index )} ves " ĊĠĠĠĠĠ Ġword . endsWith (" fe ") Ġ-> Ġ"${ word . substring ( 0 , Ġword . last Index Ġ- Ġ 1 )} ves " ĊĠĠĠĠĠ Ġword . length Ġ> Ġ 1 Ġ&& Ġword [ word . length Ġ- Ġ 1 ] Ġ== Ġ' y ' Ġ&& Ġword [ word . length Ġ- Ġ 2 ] Ġ! in Ġv ow els Ġ-> ĊĠĠĠĠĠĠĠ Ġ"${ word . substring ( 0 , Ġword . last Index )} ies " ĊĠĠĠĠĠ Ġelse Ġ-> Ġ"${ word } s " ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠE scape Ġa Ġname Ġfor ĠSQL Ċ Ġ*/ Ċ val ĠString . sql Escape : ĠString Ġget () Ġ= Ġ' `' Ġ+ Ġthis . remove Sur rounding (" ` "). remove Sur rounding ("\" ") Ġ+ Ġ' `' ĊĊ Ċ /** Ċ Ġ* ĠMake Ġa Ġstring Ġinto Ġsnake Ġcase Ċ Ġ*/ Ċ fun ĠString . to Snake Case (): ĠString Ġ{ ĊĠ Ġreturn Ġthis ĊĠĠĠ Ġ. replace ( Regex (" ([ a - z ]) ([ A - Z ]) ")) Ġ{ Ġ"${ it . group Values [ 1 ]} _${ it . group Values [ 2 ]}" Ġ} ĊĠĠĠ Ġ. replace ( Regex (" ([ a - z ]) - ([ a - z ]) ")) Ġ{ Ġ"${ it . group Values [ 1 ]} _${ it . group Values [ 2 ]}" Ġ} ĊĠĠĠ Ġ. replace ( Regex (" ([ a - z ]) \\ s + ([ a - z ]) ")) Ġ{ Ġ"${ it . group Values [ 1 ]} _${ it . group Values [ 2 ]}" Ġ} ĊĠĠĠ Ġ. toLowerCase () Ċ } Ċ Ċ /** Ċ Ġ* ĠHave Ġa Ġproperty Ġbe Ġaccessible Ġfor Ġa Ġmoment Ġand Ġthen Ġturn Ġit Ġback . Ċ Ġ*/ Ċ fun Ġ< R , ĠV , ĠT Ġ: ĠK Callable < V >> ĠT ?. accessible ( block : ĠT . () Ġ-> ĠR ): ĠR ? Ġ{ ĊĠ Ġif Ġ( this Ġ== Ġnull ) Ġreturn Ġnull ĊĠ Ġval Ġa Ġ= Ġis Accessible ĊĠ Ġif Ġ(! a ) Ġis Accessible Ġ= Ġtrue ĊĠ Ġval Ġres Ġ= Ġblock ( this ) ĊĠ Ġif Ġ(! a ) Ġis Accessible Ġ= Ġfalse ĊĠ Ġreturn Ġres Ċ } Ċ Ċ /** Ċ Ġ* ĠHave Ġa Ġ[ Field ][ java . lang . reflect . Field ] Ġbe Ġaccessible Ġfor Ġa Ġmoment Ġand Ġthen Ġturn Ġit Ġback . Ċ Ġ*/ Ċ fun Ġ< R > Ġjava . lang . reflect . Field ?. accessible OrNull ( block : Ġjava . lang . reflect . Field . () Ġ-> ĠR ): ĠR ? Ġ{ ĊĠ Ġif Ġ( this Ġ== Ġnull ) Ġreturn Ġnull ĊĠ Ġval Ġa Ġ= Ġis Accessible ĊĠ Ġif Ġ(! a ) Ġis Accessible Ġ= Ġtrue ĊĠ Ġval Ġres Ġ= Ġblock ( this ) ĊĠ Ġif Ġ(! a ) Ġis Accessible Ġ= Ġfalse ĊĠ Ġreturn Ġres Ċ } Ċ Ċ /** Ċ Ġ* ĠMake Ġthe Ġfield Ġaccessible Ġif Ġnot Ġalready Ġfor Ġthe Ġduration Ġof Ġthe Ġsupplied Ġfunction Ġcall . Ċ Ġ*/ Ċ fun Ġ< R > Ġjava . lang . reflect . Field . accessible ( block : Ġjava . lang . reflect . Field . () Ġ-> ĠR ): ĠR Ġ{ ĊĠ Ġval Ġa Ġ= Ġis Accessible ĊĠ Ġif Ġ(! a ) Ġis Accessible Ġ= Ġtrue ĊĠ Ġval Ġres Ġ= Ġblock ( this ) ĊĠ Ġif Ġ(! a ) Ġis Accessible Ġ= Ġfalse ĊĠ Ġreturn Ġres Ċ } Ċ