package Ġorg . jetbrains . dok ka . base . resolvers . local Ċ Ċ import Ġorg . jetbrains . dok ka . D ok ka Exception Ċ import Ġorg . jetbrains . dok ka . base . resolvers . local . D ok ka Location Provider . Companion . identifier To Filename Ċ import Ġorg . jetbrains . dok ka . links . DR I Ċ import Ġorg . jetbrains . dok ka . model . Display Source Set Ċ import Ġorg . jetbrains . dok ka . pages . Page Node Ċ Ċ interface ĠLocation Provider Ġ{ ĊĠĠĠ Ġfun Ġresolve ( d ri : ĠDRI , Ġsource Sets : ĠSet < Display Source Set >, Ġcontext : ĠPage Node ? Ġ= Ġnull ): ĠString ? ĊĠĠĠ Ġfun Ġresolve ( node : ĠPage Node , Ġcontext : ĠPage Node ? Ġ= Ġnull , Ġskip Extension : ĠBoolean Ġ= Ġfalse ): ĠString ? ĊĠĠĠ Ġfun Ġpath To Root ( from : ĠPage Node ): ĠString ĊĠĠĠ Ġfun Ġan cestors ( node : ĠPage Node ): ĠList < Page Node > ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġshould Ġreturn Ġgues sed Ġfilesystem Ġlocation Ġfor Ġa Ġgiven Ġ[ DR I ] ĊĠĠĠĠ Ġ* ĠIt Ġis Ġused Ġto Ġdecide Ġif Ġa Ġ[ DR I ] Ġshould Ġbe Ġpresent Ġin Ġthe Ġre location Ġlist Ġof Ġthe ĊĠĠĠĠ Ġ* Ġgenerated Ġpackage - list Ġso Ġit Ġis Ġok Ġif Ġthe Ġpath Ġdiffers Ġfrom Ġthe Ġone Ġreturned Ġby Ġ[ resolve ] ĊĠĠĠĠ Ġ* Ġ@ return ĠPath Ġto Ġa Ġg iver Ġ[ DR I ] Ġor Ġnull Ġif Ġpath Ġshould Ġnot Ġbe Ġconsidered Ġfor Ġre locations ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġexpected Location For D ri ( d ri : ĠDRI ): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġ( listOf ( d ri . packageName ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġd ri . class Names ?. split (".") ?. map Ġ{ Ġidentifier To Filename ( it ) Ġ}. or Empty () Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( d ri . callable ?. let Ġ{ Ġidentifier To Filename ( it . name ) Ġ} Ġ?: Ġ" index ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). filter NotNull (). join ToString ("/") Ċ } Ċ Ċ fun ĠLocation Provider . resolve OrThrow ( d ri : ĠDRI , Ġsource Sets : ĠSet < Display Source Set >, Ġcontext : ĠPage Node ? Ġ= Ġnull ): ĠString Ġ= ĊĠĠĠ Ġresolve ( d ri Ġ= Ġd ri , Ġsource Sets Ġ= Ġsource Sets , Ġcontext Ġ= Ġcontext ) ĊĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠD ok ka Exception (" Cannot Ġresolve Ġpath Ġfor Ġ$ d ri ") Ċ Ċ fun ĠLocation Provider . resolve OrThrow ( node : ĠPage Node , Ġcontext : ĠPage Node ? Ġ= Ġnull , Ġskip Extension : ĠBoolean Ġ= Ġfalse ): ĠString Ġ= ĊĠĠĠ Ġresolve ( node Ġ= Ġnode , Ġcontext Ġ= Ġcontext , Ġskip Extension Ġ= Ġskip Extension ) ĊĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠD ok ka Exception (" Cannot Ġresolve Ġpath Ġfor Ġ${ node . name }") Ċ