@@ -154,29 +154,75 @@ trait Resources(using ctx: DocContext) extends Locations, Writer:
154154 val signatureProvider = ScalaSignatureProvider ()
155155 def flattenToText (signature : Signature ): String = signature.getName
156156
157- def mkEntry (dri : DRI , name : String , text : String , extensionTarget : String , descr : String , kind : String ) = jsonObject(
157+ def mkEntry (
158+ dri : DRI ,
159+ name : String ,
160+ text : String ,
161+ extensionTarget : String ,
162+ descr : String ,
163+ extraDescr : String ,
164+ kind : String ,
165+ ) = jsonObject(
158166 " l" -> jsonString(relativeInternalOrAbsoluteExternalPath(dri)),
159167 " e" -> (if dri.externalLink.isDefined then rawJSON(" true" ) else rawJSON(" false" )),
160168 " i" -> jsonString(extensionTarget),
161169 " n" -> jsonString(name),
162170 " t" -> jsonString(text),
163171 " d" -> jsonString(descr),
164- " k" -> jsonString(kind)
172+ " k" -> jsonString(kind),
173+ " x" -> jsonString(extraDescr),
165174 )
166175
167176 def extensionTarget (member : Member ): String =
168177 member.kind match
169178 case Kind .Extension (on, _) => flattenToText(on.signature)
170179 case _ => " "
171180
181+ def docPartRenderPlain (d : DocPart ): String =
182+ import dotty .tools .scaladoc .tasty .comments .wiki ._
183+ import com .vladsch .flexmark .util .ast .{Node => MdNode }
184+ def renderPlain (wd : WikiDocElement ): String =
185+ wd match
186+ case Paragraph (text) => renderPlain(text)
187+ case Chain (items) => items.map(renderPlain).mkString(" " )
188+ case Italic (text) => renderPlain(text)
189+ case Bold (text) => renderPlain(text)
190+ case Underline (text) => renderPlain(text)
191+ case Superscript (text) => renderPlain(text)
192+ case Subscript (text) => renderPlain(text)
193+ case Link (link, title) => title.map(renderPlain).getOrElse(
194+ link match
195+ case DocLink .ToURL (url) => url
196+ case DocLink .ToDRI (_, name) => name
197+ case _ => " "
198+ )
199+ case Monospace (text) => renderPlain(text)
200+ case Text (text) => text
201+ case Summary (text) => renderPlain(text)
202+ case _ => " "
203+ d match
204+ case s : Seq [WikiDocElement @ unchecked] =>
205+ if s.length == 0 then " "
206+ else renderPlain(s.head)
207+ case _ => " "
208+
172209 def processPage (page : Page , pageFQName : List [String ]): Seq [(JSON , Seq [String ])] =
173210 val (res, pageName) = page.content match
174211 case m : Member if m.kind != Kind .RootPackage =>
175212 def processMember (member : Member , fqName : List [String ]): Seq [(JSON , Seq [String ])] =
176213 val signature : MemberSignature = signatureProvider.rawSignature(member)()
177214 val sig = Signature (Plain (member.name)) ++ signature.suffix
178215 val descr = if member.kind == Kind .Package then " " else fqName.mkString(" ." )
179- val entry = mkEntry(member.dri, member.name, flattenToText(sig), extensionTarget(member), descr, member.kind.name)
216+ val extraDescr = member.docs.map(d => docPartRenderPlain(d.body)).getOrElse(" " )
217+ val entry = mkEntry(
218+ member.dri,
219+ member.name,
220+ flattenToText(sig),
221+ extensionTarget(member),
222+ descr,
223+ extraDescr,
224+ member.kind.name,
225+ )
180226 val children = member
181227 .membersBy(m => m.kind != Kind .Package && ! m.kind.isInstanceOf [Classlike ])
182228 .filter(m => m.origin == Origin .RegularlyDefined && m.inheritedFrom.fold(true )(_.isSourceSuperclassHidden))
@@ -185,7 +231,7 @@ trait Resources(using ctx: DocContext) extends Locations, Writer:
185231
186232 (processMember(m, pageFQName), m.name)
187233 case _ =>
188- (Seq ((mkEntry(page.link.dri, page.link.name, page.link.name, " " , " " , " static" ), pageFQName)), " " )
234+ (Seq ((mkEntry(page.link.dri, page.link.name, page.link.name, " " , " " , " " , " static" ), pageFQName)), " " )
189235
190236 val updatedFqName = page.content match
191237 case m : Member if m.kind == Kind .Package => List (m.name)
0 commit comments