package Ġsu . jf dev . lib binder . items Ċ Ċ import Ġsu . jf dev . lib binder . Illegal Format Bind Exception Ċ import Ġsu . jf dev . lib binder . util . map Of NotNull Ċ import Ġsu . jf dev . lib binder . util . null If Empty Ċ import Ġsu . jf dev . lib binder . util . nullable Ċ Ċ data Ġclass ĠLibrary ( val Ġproperties : ĠMap < String , ĠString >) Ġ{ ĊĊĠĠĠ Ġconstructor ( group : ĠString , Ġname : ĠString , Ġversion : ĠString , Ġclassifier : ĠString ?, Ġextension : ĠString ?) ĊĠĠĠ Ġ: Ġthis ( map Of NotNull (" group " Ġto Ġgroup , Ġ" name " Ġto Ġname , Ġ" version " Ġto Ġversion , Ġ" classifier " Ġto Ġclassifier , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" extension " Ġto Ġextension )) ĊĊĠĠĠ Ġval Ġgroup : ĠString Ġby Ġproperties ĊĠĠĠ Ġval Ġname : ĠString Ġby Ġproperties ĊĠĠĠ Ġval Ġversion : ĠString Ġby Ġproperties ĊĠĠĠ Ġval Ġclassifier : ĠString ? Ġby Ġproperties . nullable () ĊĠĠĠ Ġval Ġextension : ĠString ? Ġby Ġproperties . nullable () ĊĊĠĠĠ Ġval Ġid : ĠString Ġget () Ġ= Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠ Ġappend ("$ group :$ name :$ version ") ĊĠĠĠĠĠĠĠ Ġif Ġ( classifier Ġ!= Ġnull ) Ġappend (" :$ classifier ") ĊĠĠĠĠĠĠĠ Ġif Ġ( extension Ġ!= Ġnull ) Ġappend ("@ $ extension ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfrom ( id : ĠString ): ĠLibrary Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwithout Extension Ġ= Ġid . substring Before ("@ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġextension Ġ= Ġid . substring After ("@ ", Ġ""). null If Empty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġother Parts Ġ= Ġwithout Extension . split (': ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( other Parts . size Ġ< Ġ 3 ) Ġthrow ĠIllegal Format Bind Exception (" Format Ġof Ġbind Ġdeclaration Ġis Ġun readable ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( group , Ġname , Ġversion ) Ġ= Ġother Parts ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclassifier Ġ= Ġother Parts . get OrNull ( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLibrary ( group , Ġname , Ġversion , Ġclassifier , Ġextension ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress (" NOTH ING _ TO _ INLINE ", Ġ" unused ") Ġinline Ġfun Ġfrom ( map : ĠMap < String , ĠString >) Ġ= ĠLibrary ( map ) ĊĠĠĠ Ġ} Ċ }