package Ġorg . jetbrains . kotlin . doc . templates Ċ Ċ import Ġkotlin .* Ċ import Ġkotlin . util .* Ċ import Ġorg . jetbrains . kotlin . doc . model . K Class Ċ import Ġorg . jetbrains . kotlin . doc . model . K Annotation Ċ import Ġorg . jetbrains . kotlin . doc . model . K Package Ċ import Ġorg . jetbrains . kotlin . template . Text Template Ċ import Ġorg . jetbrains . kotlin . doc . model . K Function Ċ import Ġjava . util . Collection Ċ import Ġorg . jetbrains . kotlin . doc . model . K Property Ċ import Ġorg . jetbrains . kotlin . doc . model . K Type Ċ import Ġjava . util . List Ċ Ċ abstract Ġclass ĠK Doc Template () Ġ: ĠText Template () Ġ{ ĊĠĠĠ Ġopen Ġfun Ġroot Href ( pkg : ĠK Package ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( pkg . local ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrelative Prefix () ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpkg . model . config . resolve Link ( pkg . name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġhref ( p : ĠK Package ): ĠString ĊĠĠĠ Ġ= Ġ"${ root Href ( p )} ${ p . name As Path }/ package - summary . html " ĊĊĠĠĠ Ġopen Ġfun Ġhref ( c : ĠK Class ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpostfix Ġ= Ġif Ġ( c . pkg . local ) Ġ"" Ġelse Ġ"? is - external = true " ĊĠĠĠĠĠĠĠ Ġreturn Ġ"${ root Href ( c . pkg )} ${ c . name As Path }. html $ postfix " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġhref ( f : ĠK Function ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( f . owner Ġis ĠK Class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ href ( f . owner )} # ${ f . link }" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" package - summary . html # ${ f . link }" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġhref ( f : ĠK Property ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( f . owner Ġis ĠK Class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ href ( f . owner )} # ${ f . link }" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" package - summary . html # ${ f . link }" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġextensions Href ( pkg : ĠK Package , Ġc : ĠK Class ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġis Ġinside Ġthe Ġpkg Ġso Ġno Ġneed Ġto Ġuse Ġit ... ĊĠĠĠĠĠĠĠ Ġreturn Ġ"${ c . name As Path }- extensions . html " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġextensions Href ( pkg : ĠK Package , Ġc : ĠK Class , Ġf : ĠK Function ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"${ extensions Href ( pkg , Ġc )} # ${ f . link }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġsource Href ( klass : ĠK Class ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpkg Ġ= Ġklass . pkg ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( pkg . local ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ pkg . name As RelativePath } src - html /${ klass . name As Path }. html # line .${ klass . sourceLine }" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhref ( klass ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġopen Ġfun Ġsource Href ( f : ĠK Function ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġowner Ġ= Ġf . owner ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( owner Ġis ĠK Class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpkg Ġ= Ġowner . pkg ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( pkg . local ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ root Href ( pkg )} src - html /${ owner . simple Name }. html # line .${ f . sourceLine }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhref ( f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( owner Ġis ĠK Package ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( owner . local ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO Ġhow Ġto Ġfind Ġthe Ġfunction Ġin Ġa Ġpackage ??? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ root Href ( owner )} src - html / namespace . html # line .${ f . sourceLine }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhref ( owner ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġhref ( f ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġlink ( c : ĠK Class , ĠfullName : ĠBoolean Ġ= Ġfalse ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprefix Ġ= Ġif Ġ( c . is Annotation ()) Ġ"@ " Ġelse Ġ"" ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġif Ġ( fullName ) Ġc . name Ġelse Ġc . simple Name ĊĠĠĠĠĠĠĠ Ġreturn Ġ"< A ĠHREF =\" ${ href ( c )} \" Ġtitle =\" ${ c . kind } Ġin Ġ${ c . packageName }\ ">$ prefix $ name </ A >" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġlink ( t : ĠK Type , ĠfullName : ĠBoolean Ġ= Ġfalse ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġt . klass ĊĠĠĠĠĠĠĠ Ġval Ġarguments Ġ= Ġt . arguments ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( c Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefix Ġ= Ġif Ġ( c . is Annotation ()) Ġ"@ " Ġelse Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġc name Ġ= Ġc . name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(( cname . startsWith (" jet . Function ") Ġ|| Ġc name . startsWith (" jet . Extension Function ")) Ġ&& Ġarguments . not Empty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrt Ġ= Ġarguments . last () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO Ġuse Ġdrop () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrest Ġ= Ġarguments . sub List ( 0 , Ġarguments . size Ġ- Ġ 1 ). or Empty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ type Arguments ( rest , Ġ" (", Ġ" )", Ġ" () ") }& nbsp ;< A ĠHREF =\" ${ href ( c )} \" Ġtitle =\" ${ c . kind } Ġin Ġ${ c . packageName }\ "> -& gt ;</ a >& nbsp ;${ link ( rt )}" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( cname . startsWith (" jet . Tuple ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( arguments . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Unit " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< A ĠHREF =\" ${ href ( c )} \" Ġtitle =\" ${ c . kind } Ġin Ġ${ c . packageName }\ "># </ a >${ type Arguments ( arguments , Ġ" (", Ġ" )", Ġ" () ") }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġif Ġ( fullName ) Ġc name Ġelse Ġc . simple Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< A ĠHREF =\" ${ href ( c )} \" Ġtitle =\" ${ c . kind } Ġin Ġ${ c . packageName }\ ">$ prefix $ name </ A >${ type Arguments ( arguments )}" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ t . name }${ type Arguments ( arguments )}" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġtype Arguments ( arguments : ĠList < K Type >, Ġval Ġprefix : ĠString Ġ= Ġ"& lt ;", Ġval Ġpostfix : ĠString Ġ= Ġ"& gt ;", Ġval Ġempty : ĠString Ġ= Ġ"") : ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġarguments . map < K Type , ĠString >() Ġ{ Ġlink ( it ) Ġ}. join (", Ġ") ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( text . length () Ġ== Ġ 0 ) Ġempty Ġelse Ġ"$ prefix $ text $ postfix " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġlink ( p : ĠK Package ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"< A ĠHREF =\" ${ href ( p )} \" Ġtitle =\" package Ġ${ p . name }} \"> ${ p . name }</ A >" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġlink ( a : ĠK Annotation ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġc Ġ= Ġa . klass ĊĠĠĠĠĠĠĠ Ġreturn Ġ"< A ĠHREF =\" ${ href ( c )} \" Ġtitle =\" annotation Ġin Ġ${ c . packageName }\ ">@ ${ c . simple Name }</ A >" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġrelative Prefix (): ĠString Ġ= Ġ"" Ċ } Ċ