// ĠCopyright Ġ 2 0 0 0 - 2 0 2 1 ĠJetBrains Ġs . r . o . Ġand Ġcontributors . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġorg . jetbrains . kotlin . idea . gr az ie Ċ Ċ import Ġcom . intellij . gr az ie . text . Text Content Ċ import Ġcom . intellij . gr az ie . text . Text Content . Text Domain .* Ċ import Ġcom . intellij . gr az ie . text . Text Content Builder Ċ import Ġcom . intellij . gr az ie . text . Text Extractor Ċ import Ġcom . intellij . gr az ie . utils . get Not So Dist ant Similar S iblings Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . impl . source . tree . Psi Comment Impl Ċ import Ġcom . intellij . psi . tree . Token Set Ċ import Ġcom . intellij . psi . util . elementType Ċ import Ġorg . jetbrains . kotlin . k doc . lexer . K Doc Tokens Ċ import Ġorg . jetbrains . kotlin . k doc . psi . impl . K Doc Section Ċ import Ġorg . jetbrains . kotlin . k doc . psi . impl . K Doc Tag Ċ import Ġorg . jetbrains . kotlin . lexer . Kt Tokens Ċ import Ġorg . jetbrains . kotlin . psi . Kt String Template Expression Ċ Ċ internal Ġclass ĠKotlin Text Extractor Ġ: ĠText Extractor () Ġ{ ĊĠ Ġprivate Ġval Ġk doc Builder Ġ= ĠText Content Builder . From Psi ĊĠĠĠ Ġ. with Unknown Ġ{ Ġe Ġ-> Ġe . elementType Ġ== ĠK Doc Tokens . MARK DOWN _ LINK Ġ&& Ġe . text . startsWith ("[ ") Ġ} ĊĠĠĠ Ġ. ex cluding Ġ{ Ġe Ġ-> Ġe . elementType Ġ== ĠK Doc Tokens . MARK DOWN _ LINK Ġ&& Ġ! e . text . startsWith ("[ ") Ġ} ĊĠĠĠ Ġ. ex cluding Ġ{ Ġe Ġ-> Ġe . elementType Ġ== ĠK Doc Tokens . LEADING _ ASTER IS K Ġ} ĊĠĠĠ Ġ. re moving Ind ents (" Ġ\ t ") ĊĊĠ Ġpublic Ġoverride Ġfun Ġbuild Text Content ( root : ĠPsi Element , Ġallowed Domains : ĠSet < Text Content . Text Domain >): ĠText Content ? Ġ{ ĊĠĠĠ Ġif Ġ( DOCUMENT ATION Ġin Ġallowed Domains ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( root Ġis ĠK Doc Section ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġk doc Builder . ex cluding Ġ{ Ġe Ġ-> Ġe Ġis ĠK Doc Tag Ġ&& Ġe Ġ!= Ġroot Ġ}. build ( root , ĠDOCUMENT ATION ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( root Ġis ĠK Doc Tag ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġk doc Builder . ex cluding Ġ{ Ġe Ġ-> Ġe . elementType Ġ== ĠK Doc Tokens . TAG _ NAME Ġ}. build ( root , ĠDOCUMENT ATION ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( COMMENTS Ġin Ġallowed Domains Ġ&& Ġroot Ġis ĠPsi Comment Impl ) Ġ{ ĊĠĠĠĠĠ Ġval Ġroots Ġ= Ġget Not So Dist ant Similar S iblings ( root ) Ġ{ ĊĠĠĠĠĠĠĠ Ġit Ġ== Ġroot Ġ|| Ġroot . elementType Ġ== ĠK t Tokens . EOL _ COMMENT Ġ&& Ġit . elementType Ġ== ĠK t Tokens . EOL _ COMMENT ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġreturn ĠText Content . join With Whitespace ( roots . map NotNull Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠText Content Builder . From Psi . re moving Ind ents (" Ġ\ t */ "). build ( it , ĠCOMMENT S ) ĊĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( LITERAL S Ġin Ġallowed Domains Ġ&& Ġroot Ġis ĠK t String Template Expression ) Ġ{ ĊĠĠĠĠĠ Ġ// ĠFor Ġmultiline Ġstrings , Ġwe Ġwant Ġto Ġtreat Ġ`' | '` Ġas Ġan Ġindentation Ġbecause Ġit Ġis Ġcommonly Ġused Ġwith Ġ[ String . trim Margin ]. ĊĠĠĠĠĠ Ġreturn ĠText Content Builder . From Psi . re moving Ind ents (" Ġ\ t | "). build ( root , ĠL ITERAL S ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġnull ĊĠ Ġ} Ċ }