@@ -132,36 +132,44 @@ trait Resources(using ctx: DocContext) extends Locations, Writer:
132132 case Keyword (s) => s
133133 }.mkString
134134
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(
136136 " l" -> jsonString(relativeInternalOrAbsoluteExternalPath(dri)),
137137 " e" -> (if dri.externalLink.isDefined then rawJSON(" true" ) else rawJSON(" false" )),
138+ " i" -> jsonString(extensionTarget),
138139 " n" -> jsonString(name),
139140 " t" -> jsonString(text),
140141 " d" -> jsonString(descr),
141142 " k" -> jsonString(kind)
142143 )
143144
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
146152 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 ])] =
149154 val signatureBuilder = ScalaSignatureProvider .rawSignature(member, InlineSignatureBuilder ())().asInstanceOf [InlineSignatureBuilder ]
150155 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)
152158 val children = member
153159 .membersBy(m => m.kind != Kind .Package && ! m.kind.isInstanceOf [Classlike ])
154160 .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))
156163
157- processMember(m)
164+ ( processMember(m, pageFQName), m.name )
158165 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)), " " )
160167
161- res ++ page.children.flatMap(processPage)
168+ val updatedFqName = if ! pageName.isEmpty then pageFQName :+ pageName else pageFQName
169+ res ++ page.children.flatMap(processPage(_, updatedFqName))
162170
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) )}; " )
165173
166174 def scastieConfiguration () =
167175 Resource .Text (scastieConfigurationPath, s """ scastieConfiguration = " ${
0 commit comments