package Ġcom . lik et hes al ad . android . buddy lib . modules . create metadata . data Ċ Ċ import Ġcom . lik et hes al ad . android . buddy lib . di . Library Scope Ċ import Ġcom . lik et hes al ad . android . common . models . lib info . Android Bu ddy Library Info Ċ import Ġjavax . inject . Inject Ċ Ċ @ Library Scope Ċ class ĠAndroid Bu ddy Library Info Maker Ġ@ Inject Ġconstructor () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠVALID _ ID _ REGEX Ġ= ĠRegex ("[ a - z ]+ [ a - z 0 - 9 ]* ([ .- ]? [ a - z 0 - 9 ]+ )* ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠCHECK _ NAME _ AND _ GROUP _ VALID ITY Ġ= ĠRegex ("[ a - zA - Z 0 - 9 ]+ ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠCHECK _ NAME _ AND _ GROUP _ WR APP ING Ġ= ĠRegex ("( ^ [^ a - zA - Z 0 - 9 ]+ |[ ^ a - zA - Z 0 - 9 ]+ \$ )") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠC LEAN _ NAME _ SPACING Ġ= ĠRegex ("[ \\ s \\ t \\ n ]+ ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠC LEAN _ GROUP _ IL LEG AL _ CHARS Ġ= ĠRegex ("[ ^ a - zA - Z 0 - 9 . ]+ ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmake ( ĊĠĠĠĠĠĠĠ Ġid : ĠString , ĊĠĠĠĠĠĠĠ Ġgroup : ĠString , ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġversion : ĠString , ĊĠĠĠĠĠĠĠ Ġplugin Names : ĠSet < String > ĊĠĠĠ Ġ): ĠAndroid Bu ddy Library Info Ġ{ ĊĠĠĠĠĠĠĠ Ġvalidate Id ( id ) ĊĠĠĠĠĠĠĠ Ġvalidate Group ( group ) ĊĠĠĠĠĠĠĠ Ġvalidate Name ( name ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠAndroid Bu ddy Library Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclean Group ( group ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclean Name ( name ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplugin Names ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate Id ( id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! VALID _ ID _ REGEX . matches ( id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Id Ġprovided Ġ'$ id ' Ġhas Ġnot Ġa Ġvalid Ġformat :" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n Ġ- Only Ġlowercase Ġletters , Ġnumbers , Ġ'.' Ġand Ġ'-' Ġare Ġallowed ." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n Ġ- It Ġmust Ġstart Ġwith Ġa Ġletter ." Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n Ġ- It Ġcannot Ġend Ġneither Ġwith Ġ'-' Ġnor Ġwith Ġ'. '. " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ n Ġ- There Ġcannot Ġbe Ġa Ġconsecutive Ġ'-' Ġor Ġ'.' Ġafter Ġa Ġ'-' Ġand / or Ġ'. '. " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate Group ( group : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! CHECK _ NAME _ AND _ GROUP _ VALID ITY . contains Match In ( group )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" The Ġgroup Ġprovided Ġ'$ group ' Ġis Ġnot Ġvalid .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġvalidate Name ( name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! CHECK _ NAME _ AND _ GROUP _ VALID ITY . contains Match In ( name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" The Ġname Ġprovided Ġ'$ name ' Ġis Ġnot Ġvalid .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclean Name ( name : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Pro per ly Wrapped Ġ= Ġname . replace ( CHECK _ NAME _ AND _ GROUP _ WR APP ING , Ġ"") ĊĠĠĠĠĠĠĠ Ġreturn Ġname Pro per ly Wrapped . replace ( CLEAN _ NAME _ SPACING , Ġ"_ "). toLowerCase () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclean Group ( group : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgroup Pro per ly Wrapped Ġ= Ġgroup . replace ( CHECK _ NAME _ AND _ GROUP _ WR APP ING , Ġ"") ĊĠĠĠĠĠĠĠ Ġreturn Ġgroup Pro per ly Wrapped . replace ( CLEAN _ GROUP _ IL LEG AL _ CHARS , Ġ". "). toLowerCase () ĊĠĠĠ Ġ} Ċ Ċ }