package Ġcom . k ings ley ad io . dee plink Ċ Ċ class ĠDeep Link Parser < T >( ĊĠĠĠ Ġprivate Ġval Ġenvironment : ĠEnvironment , ĊĠĠĠ Ġprivate Ġval Ġroutes : ĠList < Base Route < T >>, ĊĠĠĠ Ġprivate Ġval Ġfallback : ĠAction < T > Ċ ) Ġ{ ĊĊĠĠĠ Ġfun Ġparse ( uri : ĠDeep Link Uri ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( route , Ġmatch Result ) Ġ= Ġroutes . as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit Ġto Ġit . match With ( uri ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġit . second . is Match Ġ} Ġ?: Ġreturn Ġfallback . run ( uri , Ġempty Map (), Ġenvironment ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġroute . run ( uri , Ġmatch Result . params , Ġenvironment ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġclass ĠBuilder < T >( private Ġval Ġenvironment : ĠEnvironment ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġroutes : ĠMutable Set < Base Route < T >> Ġ= ĠLinked HashSet () ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġdefault Fallback : ĠAction < T >? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġadd Route ( route : ĠBase Route < T >) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroutes . add ( route ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġadd Fallback Action ( action : ĠAction < T >) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Fallback Ġ= Ġaction ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbuild (): ĠDeep Link Parser < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfallback Ġ= Ġdefault Fallback Ġ?: Ġerror (" Default Ġfallback Ġis Ġnot Ġprovided !") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠDeep Link Parser ( environment , Ġroutes . toList (), Ġfallback ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġof ( environment : ĠEnvironment ): ĠBuilder < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBuilder ( environment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ