@@ -132,36 +132,44 @@ trait Resources(using ctx: DocContext) extends Locations, Writer:
132
132
case Keyword (s) => s
133
133
}.mkString
134
134
135
- def mkEntry (dri : DRI , name : String , text : String , descr : String , kind : String ) = jsonObject(
135
+ def mkEntry (dri : DRI , name : String , text : String , extensionTarget : String , descr : String , kind : String ) = jsonObject(
136
136
" l" -> jsonString(relativeInternalOrAbsoluteExternalPath(dri)),
137
137
" e" -> (if dri.externalLink.isDefined then rawJSON(" true" ) else rawJSON(" false" )),
138
+ " i" -> jsonString(extensionTarget),
138
139
" n" -> jsonString(name),
139
140
" t" -> jsonString(text),
140
141
" d" -> jsonString(descr),
141
142
" k" -> jsonString(kind)
142
143
)
143
144
144
- def processPage (page : Page ): Seq [JSON ] =
145
- val res = page.content match
145
+ def extensionTarget (member : Member ): String =
146
+ member.kind match
147
+ case Kind .Extension (on, _) => flattenToText(on.signature)
148
+ case _ => " "
149
+
150
+ def processPage (page : Page , pageFQName : List [String ]): Seq [(JSON , Seq [String ])] =
151
+ val (res, pageName) = page.content match
146
152
case m : Member if m.kind != Kind .RootPackage =>
147
- val descr = m.dri.asFileLocation
148
- def processMember (member : Member ): Seq [JSON ] =
153
+ def processMember (member : Member , fqName : List [String ]): Seq [(JSON , Seq [String ])] =
149
154
val signatureBuilder = ScalaSignatureProvider .rawSignature(member, InlineSignatureBuilder ())().asInstanceOf [InlineSignatureBuilder ]
150
155
val sig = Signature (Plain (member.name)) ++ signatureBuilder.names.reverse
151
- val entry = mkEntry(member.dri, member.name, flattenToText(sig), descr, member.kind.name)
156
+ val descr = fqName.mkString(" ." )
157
+ val entry = mkEntry(member.dri, member.name, flattenToText(sig), extensionTarget(member), descr, member.kind.name)
152
158
val children = member
153
159
.membersBy(m => m.kind != Kind .Package && ! m.kind.isInstanceOf [Classlike ])
154
160
.filter(m => m.origin == Origin .RegularlyDefined && m.inheritedFrom.fold(true )(_.isSourceSuperclassHidden))
155
- Seq (entry) ++ children.flatMap(processMember)
161
+ val updatedFqName = fqName :+ member.name
162
+ Seq ((entry, updatedFqName)) ++ children.flatMap(processMember(_, updatedFqName))
156
163
157
- processMember(m)
164
+ ( processMember(m, pageFQName), m.name )
158
165
case _ =>
159
- Seq (mkEntry(page.link.dri, page.link.name, page.link.name, " " , " static" ))
166
+ ( Seq (( mkEntry(page.link.dri, page.link.name, page.link.name, " " , " " , " static" ), pageFQName)), " " )
160
167
161
- res ++ page.children.flatMap(processPage)
168
+ val updatedFqName = if ! pageName.isEmpty then pageFQName :+ pageName else pageFQName
169
+ res ++ page.children.flatMap(processPage(_, updatedFqName))
162
170
163
- val entries = pages.flatMap(processPage)
164
- Resource .Text (searchDataPath, s " pages = ${jsonList(entries)}; " )
171
+ val entries = pages.flatMap(processPage(_, Nil ) )
172
+ Resource .Text (searchDataPath, s " pages = ${jsonList(entries.map(_._1) )}; " )
165
173
166
174
def scastieConfiguration () =
167
175
Resource .Text (scastieConfigurationPath, s """ scastieConfiguration = " ${
0 commit comments