package Ġcodegen . feature Ċ Ċ import Ġcodegen . model . Must ache Model Ċ import Ġcodegen . tools .* Ċ import Ġcom . github . must ache java . Default Must ache Factory Ċ import Ġjava . io . File Ċ import Ġjava . io . String Writer ĊĊ Ċ fun Ġcreate Feature ( ĊĠĠĠ Ġfeature Name : ĠString , ĊĠĠĠ ĠpackageName : ĠString , ĊĠĠĠ Ġcore PackageName : ĠString , ĊĠĠĠ Ġmust ache Factory : ĠDefault Must ache Factory Ċ ) Ġ{ ĊĠĠĠ Ġval Ġfeature Name Un ders core Ġ= Ġfeature Name . to Lower C ame Case (). to Lower Un ders core () ĊĠĠĠ Ġval Ġfeature Package Path Ġ= Ġ" lib / features ${ File . separator }$ feature Name Un ders core " ĊĊĠĠĠ Ġval Ġfeature Presentation Path Ġ= Ġ"$ feature Package Path ${ File . separator } presentation ". to Lower C ame Case (). to Lower Un ders core () ĊĊĊĠĠĠ Ġval Ġfeature Must ache Models Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠFeature ViewModel ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ feature Name } ViewModel ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcore PackageName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmust ache Factory . compile (" feature ViewModel . must ache "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Presentation Path , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Name Un ders core , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Name . toLowerCase () ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠFeature Widget ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ feature Name } Widget ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcore PackageName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmust ache Factory . compile (" widget . must ache "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Presentation Path , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Name Un ders core , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Name . toLowerCase (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Name . to Lower Un ders core (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Name . to Lower C ame Case () ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠFeature Ui Model ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ feature Name } Ui Model ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcore PackageName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmust ache Factory . compile (" ui Model . must ache "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Presentation Path , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Name Un ders core , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Name . toLowerCase () ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠInputs ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Inputs ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcore PackageName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmust ache Factory . compile (" inputs . must ache "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ feature Presentation Path / inputs ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Name Un ders core , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Name . toLowerCase () ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ ĠActions ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Actions ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcore PackageName , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmust ache Factory . compile (" actions . must ache "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Presentation Path , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Name Un ders core , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfeature Name . toLowerCase () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġfeature Must ache Models . forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! does File Exist ( it . filePath , Ġit . className . to Lower C ame Case (). to Lower Un ders core (), Ġ". dart ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkotlin Class Writer Ġ= Ġget FileWriter ( it . filePath , Ġit . className . to Lower C ame Case (). to Lower Un ders core (), Ġ". dart ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwrite Must ache Template ( it . must ache , Ġit , Ġkotlin Class Writer ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . out . println (" File Ġ${ it . className . to Lower C ame Case (). to Lower Un ders core ()} Ġexists , Ġwill Ġnot Ġcreate ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ val Ġcamel Regex Ġ= Ġ"( ?< =[ a - zA - Z ])[ A - Z ] ". to Regex () Ċ val Ġsnake Regex Ġ= Ġ"_ [ a - zA - Z ] ". to Regex () Ċ Ċ // ĠString Ġextensions Ċ fun ĠString . camel To Snake Case (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġcamel Regex . replace ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ"_ ${ it . value }" ĊĠĠĠ Ġ}. toLowerCase () Ċ } Ċ Ċ fun ĠString . snake ToLower Camel Case (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġsnake Regex . replace ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġit . value . replace ("_ "," ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toUpperCase () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠString . snake ToUpper Camel Case (): ĠString Ġ{ ĊĠĠĠ Ġreturn Ġthis . snake ToLower Camel Case (). capitalize () Ċ }