@@ -154,29 +154,75 @@ trait Resources(using ctx: DocContext) extends Locations, Writer:
154
154
val signatureProvider = ScalaSignatureProvider ()
155
155
def flattenToText (signature : Signature ): String = signature.getName
156
156
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(
158
166
" l" -> jsonString(relativeInternalOrAbsoluteExternalPath(dri)),
159
167
" e" -> (if dri.externalLink.isDefined then rawJSON(" true" ) else rawJSON(" false" )),
160
168
" i" -> jsonString(extensionTarget),
161
169
" n" -> jsonString(name),
162
170
" t" -> jsonString(text),
163
171
" d" -> jsonString(descr),
164
- " k" -> jsonString(kind)
172
+ " k" -> jsonString(kind),
173
+ " x" -> jsonString(extraDescr),
165
174
)
166
175
167
176
def extensionTarget (member : Member ): String =
168
177
member.kind match
169
178
case Kind .Extension (on, _) => flattenToText(on.signature)
170
179
case _ => " "
171
180
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
+
172
209
def processPage (page : Page , pageFQName : List [String ]): Seq [(JSON , Seq [String ])] =
173
210
val (res, pageName) = page.content match
174
211
case m : Member if m.kind != Kind .RootPackage =>
175
212
def processMember (member : Member , fqName : List [String ]): Seq [(JSON , Seq [String ])] =
176
213
val signature : MemberSignature = signatureProvider.rawSignature(member)()
177
214
val sig = Signature (Plain (member.name)) ++ signature.suffix
178
215
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
+ )
180
226
val children = member
181
227
.membersBy(m => m.kind != Kind .Package && ! m.kind.isInstanceOf [Classlike ])
182
228
.filter(m => m.origin == Origin .RegularlyDefined && m.inheritedFrom.fold(true )(_.isSourceSuperclassHidden))
@@ -185,7 +231,7 @@ trait Resources(using ctx: DocContext) extends Locations, Writer:
185
231
186
232
(processMember(m, pageFQName), m.name)
187
233
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)), " " )
189
235
190
236
val updatedFqName = page.content match
191
237
case m : Member if m.kind == Kind .Package => List (m.name)
0 commit comments