/**************************************************************************** Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 6 - 2 0 2 0 ĠY ev gen y ĠK ras ik ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ċ Ġ* Ġ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 . gitlab . y kr as ik . game dex . core . file Ċ Ċ import Ġcom . gitlab . y kr as ik . game dex . Folder Name Ċ Ċ /** Ċ Ġ* ĠUser : Ġy kr as ik Ċ Ġ* ĠDate : Ġ 1 1 / 0 6 / 2 0 1 7 Ċ Ġ* ĠTime : Ġ 1 3 : 5 4 Ċ Ġ*/ Ċ object ĠFileName Handler Ġ{ ĊĠĠĠ Ġprivate Ġval Ġorder Regex Ġ= Ġ"^ \\ [ \\ d + \\ ] ". to Regex () ĊĠĠĠ Ġprivate Ġval Ġversion Regex Ġ= Ġ"\\ [( ? i : Alpha | Beta | Update |[ A - Za - z ]) ? Ġ? v ? Ġ? [ \\ d \\. ]* [ A - Za - z ]? [ \\ d \\. ]* \\ ] ". to Regex () ĊĠĠĠ Ġprivate Ġval Ġmeta Tag Regex Ġ= Ġ"\\ [ .*? \\ ] ". to Regex () ĊĠĠĠ Ġprivate Ġval Ġspaces Regex Ġ= Ġ"\\ s +". to Regex () ĊĊĠĠĠ Ġfun Ġanalyze ( raw Name : ĠString ): ĠFolder Name Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( raw Name Without Order , Ġorder ) Ġ= Ġextract Metadata ( raw Name , Ġorder Regex ) ĊĠĠĠĠĠĠĠ Ġval Ġ( raw Name Without Version , Ġversion ) Ġ= Ġextract Metadata ( raw Name Without Order , Ġversion Regex ) ĊĠĠĠĠĠĠĠ Ġval Ġ( raw Name Without Metadata , Ġmeta Tag ) Ġ= Ġextract Metadata ( raw Name Without Version , Ġmeta Tag Regex ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠFolder Name ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġraw Name Ġ= Ġraw Name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprocessed Name Ġ= Ġraw Name Without Metadata . collapse Spaces (). replace (" Ġ- Ġ", Ġ": Ġ"), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorder Ġ= Ġorder , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmeta Tag Ġ= Ġmeta Tag , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion Ġ= Ġversion ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġextract Metadata ( raw Name : ĠString , Ġregex : ĠRegex ): ĠPair < String , ĠString ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatch Ġ= Ġregex . find ( raw Name ) Ġ?: Ġreturn Ġraw Name Ġto Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġmetadata Ġ= Ġmatch . value . let Ġ{ Ġit . substring ( 1 , Ġit . length Ġ- Ġ 1 ) Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġraw Name Without Metadata Ġ= Ġraw Name . remove Range ( match . range ) ĊĠĠĠĠĠĠĠ Ġreturn Ġraw Name Without Metadata Ġto Ġmetadata ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsanitize FileName ( name : ĠString ) Ġ= Ġname . replace (": Ġ", Ġ" Ġ- Ġ") ĊĠĠĠĠĠĠĠ Ġ. replace ("/", Ġ" Ġ") ĊĠĠĠĠĠĠĠ Ġ. replace ("\\ ", Ġ" Ġ") ĊĠĠĠĠĠĠĠ Ġ. replace (" ?", Ġ" Ġ") ĊĠĠĠĠĠĠĠ Ġ. collapse Spaces () ĊĊĠĠĠ Ġprivate Ġfun ĠString . collapse Spaces () Ġ= Ġspaces Regex . replace ( this , Ġ" Ġ"). trim () Ċ }