package Ġcom . skill w . p ou voir . manager Ċ Ċ import Ġcom . skill w . p ou voir . P ou voir Ċ import Ġcom . skill w . p ou voir . api . function . Function Ċ import Ġcom . skill w . p ou voir . api . manager . sub . Function Manager Ċ import Ġorg . bukkit . entity . Living Entity Ċ import Ġjava . util .* Ċ import Ġjava . util . regex . Pattern Ċ Ċ object ĠFunction ManagerImpl Ġ: ĠFunction Manager () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġpriority Ġ= Ġ 5 ĊĠĠĠ Ġoverride Ġval Ġkey Ġ= Ġ" Function Manager " ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfunction Pattern : ĠPattern ĊĠĠĠ Ġprivate Ġval Ġregex Cache Ġ= ĠStringBuilder () ĊĊĠĠĠ Ġoverride Ġfun Ġregister ( func : ĠFunction ) Ġ{ ĊĠĠĠĠĠĠĠ Ġregister ( func . key , Ġfunc ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġregister ( key : ĠString , Ġfunc : ĠFunction ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmap [ key ] Ġ= Ġfunc ĊĠĠĠĠĠĠĠ Ġif Ġ( regex Cache . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregex Cache . append ("| ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġregex Cache . append ( key ) ĊĠĠĠĠĠĠĠ Ġval Ġregex Ġ= Ġ" ($ regex Cache )\\ (( .* )\\ )" ĊĠĠĠĠĠĠĠ Ġfunction Pattern Ġ= ĠPattern . compile ( regex , Ġ 2 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġto Args ( str : ĠString ): ĠArray < String > Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( str . contains ("," )) Ġstr . replace (" Ġ", Ġ""). split ("," ). to Typed Array () Ġelse ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr . replace (" Ġ", Ġ"") ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġanalysis ( text : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġtext ĊĠĠĠĠĠĠĠ Ġvar Ġmatcher Ġ= Ġfunction Pattern . matcher ( result ) ĊĠĠĠĠĠĠĠ Ġwhile Ġ( matcher . find ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfunc Ġ= Ġmap [ matcher . group ( 1 )] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= Ġmatcher . group ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult . replace ( matcher . group ( 0 ), Ġfunc !!. apply ( to Args ( args )). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatcher Ġ= Ġfunction Pattern . matcher ( result ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġanalysis ( entity : ĠL iving Entity , Ġtext : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġanalysis ( P ou voir . r pg Place Holder API . replace ( entity , Ġtext )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġanalysis ( uuid : ĠUUID , Ġtext : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġanalysis ( P ou voir . r pg Place Holder API . replace ( uuid , Ġtext )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġreload () Ġ{ ĊĊĠĠĠ Ġ} ĊĊ Ċ }