package Ġcom . hex agon kt . http . patterns Ċ Ċ data Ġclass ĠRegex Path Pattern ( val Ġregex : ĠRegex ) Ġ: ĠPath Pattern Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġpattern : ĠString Ġ= Ġregex . pattern ĊĠĠĠ Ġoverride Ġval Ġprefix : ĠBoolean Ġ= Ġ! regex . pattern . endsWith ("$ ") ĊĊĠĠĠ Ġinternal Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠPARAMETER _ REGEX Ġ= ĠRegex (""" \ (\ ?< \ w + > """) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck Path Pattern Prefix ( pattern , ĠlistOf ("( .*? )", Ġ"$ ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġparameters : ĠList < String > Ġ= ĊĠĠĠĠĠĠĠ ĠPARAMETER _ REGEX . findAll ( pattern ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . value . remove Prefix (" (? < "). remove Suffix ("> ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĊĠĠĠ Ġoverride Ġfun Ġadd Prefix ( prefix : ĠString ?): ĠPath Pattern Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( prefix Ġ== Ġnull ) Ġthis ĊĠĠĠĠĠĠĠ Ġelse Ġcopy ( regex Ġ= ĠRegex ( prefix Ġ+ Ġpattern )) ĊĊĠĠĠ Ġ@ Opt In ( Experimental Std lib Api :: class ) ĊĠĠĠ Ġoverride Ġfun Ġmatches ( request Url : ĠString ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( prefix ) Ġregex . matches At ( request Url , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġelse Ġregex . matches ( request Url ) ĊĊĠĠĠ Ġoverride Ġfun Ġextract Parameters ( request Url : ĠString ): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġregex . match Ent ire ( request Url ) ĊĠĠĠĠĠĠĠ Ġrequire ( result Ġ!= Ġnull ) Ġ{ Ġ" URL Ġ'$ request Url ' Ġdoes Ġnot Ġmatch Ġpath " Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġall Values Ġ= Ġresult . group Values ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. drop ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Indexed Ġ{ Ġii , Ġv Ġ-> Ġii . toString () Ġto Ġv Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toMap () ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Groups Ġ= Ġresult . groups Ġas ĠMatch Named Group Collection ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( parameters . isEmpty ()) Ġall Values ĊĠĠĠĠĠĠĠ Ġelse Ġparameters . associate With Ġ{ Ġresult Groups [ it ]?. value Ġ?: Ġ"" Ġ} Ġ+ Ġall Values ĊĠĠĠ Ġ} Ċ } Ċ