package Ġorg . elixir _ lang . documentation Ċ Ċ import Ġcom . intellij . lang . documentation . Documentation Markup Ċ import Ġcom . intellij . lang . documentation . Documentation Provider Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġorg . elixir _ lang . beam . psi . Beam File Impl Ċ import Ġorg . elixir _ lang . psi . Elixir Un matched Expression Ċ import Ġorg . elixir _ lang . reference . Callable Ċ import Ġorg . elixir _ lang . reference . Module Ċ import Ġorg . intellij . markdown . fl av ours . g fm . GF M Fl avour Descriptor Ċ import Ġorg . intellij . markdown . html . Html Generator Ċ import Ġorg . intellij . markdown . parser . Markdown Parser ĊĊ Ċ class ĠE lixir Documentation Provider Ġ: ĠDocumentation Provider Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġgenerate Doc ( element : ĠPsi Element , Ġoriginal Element : ĠPsi Element ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠWhen Ġshowing Ġdocs Ġfrom Ġauto - completed Ġmodules / functions ĊĠĠĠĠĠĠĠ Ġ// Ġit Ġwill Ġresolve Ġto Ġdef / defmodule Ġelement ĊĠĠĠĠĠĠĠ Ġ// Ġdetect Ġthat Ġand Ġinstead Ġjust Ġignore Ġthe Ġdefin er ĊĠĠĠĠĠĠĠ Ġval Ġignore Def iner Ġ= Ġoriginal Element ?. text ?. isBlank () Ġ== Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġoriginal Element ?. parent ?. text ?. isBlank () Ġ== Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġfetch Docs ( element , Ġignore Def iner )?. let Ġ{ Ġformat Docs ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġgenerate Hover Doc ( element : ĠPsi Element , Ġoriginal Element : ĠPsi Element ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġgenerate Doc ( element , Ġoriginal Element ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġformat Docs ( f etched Docs : ĠF etched Docs ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfl avour Ġ= ĠG FM Fl avour Descriptor () ĊĠĠĠĠĠĠĠ Ġval Ġparsed Tree Ġ= ĠMarkdown Parser ( fl avour ). build Markdown Tree FromString ( f etched Docs . docs Markdown ) ĊĠĠĠĠĠĠĠ Ġval Ġhtml Ġ= ĠHtml Generator ( f etched Docs . docs Markdown , Ġparsed Tree , Ġfl avour , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. generate Html () ĊĊĠĠĠĠĠĠĠ Ġval Ġdocumentation Html Ġ= ĠStringBuilder () ĊĊĠĠĠĠĠĠĠ Ġval ĠmoduleName Ġ= Ġfetched Docs . moduleName . remove Prefix (" Elixir .") ĊĊĠĠĠĠĠĠĠ Ġval Ġdefinition String Ġ= Ġwhen Ġ( f etched Docs ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠF etched Docs . Function Or Macro Documentation Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< i >${ f etched Docs . kind } Ġ${ moduleName }</ i >.< b >${ f etched Docs . methodName }</ b >" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" (${ f etched Docs . arguments . join ToString () })" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠF etched Docs . Module Documentation Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"< i > module </ i > Ġ< b >${ moduleName }</ b >" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdocumentation Html . append ( Documentation Markup . DEFINITION _ START ) ĊĠĠĠĠĠĠĠ Ġdocumentation Html . append ( definition String ) ĊĠĠĠĠĠĠĠ Ġdocumentation Html . append ( Documentation Markup . DEFINITION _ END ) ĊĠĠĠĠĠĠĠ Ġdocumentation Html . append ( Documentation Markup . CONTENT _ START ) ĊĠĠĠĠĠĠĠ Ġif Ġ( f etched Docs Ġis ĠF etched Docs . Function Or Macro Documentation Ġ&& Ġfetched Docs . deprecated Ġ!= Ġnull ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocumentation Html . append ("< b > deprecated </ b > Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocumentation Html . append ( f etched Docs . deprecated ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocumentation Html . append ("\ n ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdocumentation Html . append ( html ) ĊĠĠĠĠĠĠĠ Ġdocumentation Html . append ( Documentation Markup . CONTENT _ END ) ĊĠĠĠĠĠĠĠ Ġreturn Ġdocumentation Html . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfetch Docs ( element : ĠPsi Element , Ġignore Def iner : ĠBoolean ): ĠF etched Docs ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresolved Ġ= Ġelement ĊĠĠĠĠĠĠĠ Ġif Ġ(! ignore Def iner ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresolved Ġ= Ġelement . reference ?. resolve () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ(( element . reference Ġas ? ĠCallable )?. multi Resolve ( false ) Ġ?: Ġ( element . reference Ġas ? ĠModule )?. multi Resolve ( false )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . map Ġ{ Ġit . element Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . filter Is Instance < Elixir Un matched Expression >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġnull ĊĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġresolves Ġto Ġ. beam Ġfile Ġthen Ġfetch Ġdocs Ġfrom Ġthe Ġde compiled Ġdocs ĊĠĠĠĠĠĠĠ Ġif Ġ( resolved . containing File . original File Ġis ĠBe am File Impl Ġ|| Ġelement . containing File . original File Ġis ĠBe am File Impl ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBe am Docs Helper . fetch Docs ( element , Ġresolved , Ġignore Def iner ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠSource File Docs Helper . fetch Docs ( element , Ġresolved ) ĊĠĠĠ Ġ} Ċ } ĊĊ