aboutsummaryrefslogtreecommitdiff
path: root/dottydoc/js/src
diff options
context:
space:
mode:
Diffstat (limited to 'dottydoc/js/src')
-rw-r--r--dottydoc/js/src/DottyDoc.scala28
-rw-r--r--dottydoc/js/src/EntityIndex.scala25
-rw-r--r--dottydoc/js/src/Search.scala121
-rw-r--r--dottydoc/js/src/html/CustomTags.scala13
-rw-r--r--dottydoc/js/src/html/EntityLayout.scala212
-rw-r--r--dottydoc/js/src/html/Member.scala313
-rw-r--r--dottydoc/js/src/model/entities.scala180
-rw-r--r--dottydoc/js/src/model/references.scala84
8 files changed, 0 insertions, 976 deletions
diff --git a/dottydoc/js/src/DottyDoc.scala b/dottydoc/js/src/DottyDoc.scala
deleted file mode 100644
index d33648e49..000000000
--- a/dottydoc/js/src/DottyDoc.scala
+++ /dev/null
@@ -1,28 +0,0 @@
-package dotty.tools.dottydoc
-package js
-
-import scala.scalajs.{ js => sjs }
-import sjs.Dynamic.global
-import sjs.JSApp
-import sjs.annotation.{ JSExport, JSName }
-import org.scalajs.dom
-import dom.document
-import dom.webworkers.Worker
-import model._
-import html.EntityLayout
-
-@JSExport object DottyDocJS {
- @JSExport def main(target: dom.html.Div) = {
- document.title = "Dotty " + EntityIndex.currentEntity.path.mkString(".")
- target.appendChild(EntityLayout(EntityIndex.currentEntity).html.render)
- hljs.initHighlightingOnLoad()
-
- val searchInput = document.getElementById("search").asInstanceOf[dom.html.Input]
- searchInput.onkeyup = new Search(searchInput).search()
- }
-}
-
-/** Library wrapper for highlighting */
-@sjs.native object hljs extends sjs.Object {
- def initHighlightingOnLoad(): sjs.Any = sjs.native
-}
diff --git a/dottydoc/js/src/EntityIndex.scala b/dottydoc/js/src/EntityIndex.scala
deleted file mode 100644
index 358298ca0..000000000
--- a/dottydoc/js/src/EntityIndex.scala
+++ /dev/null
@@ -1,25 +0,0 @@
-package dotty.tools
-package dottydoc
-package js
-
-import scala.scalajs.{ js => sjs }
-import sjs.JSConverters._
-import sjs.Dynamic.global
-import sjs.JSApp
-import sjs.annotation.JSName
-
-/** The unpickled AST available as scala classes */
-object EntityIndex {
- import js.model._
-
- lazy val packages: Map[String, Package] =
- Unparsed.packages.toMap[String, Package]
-
- val currentEntity: Entity = Unparsed.currentEntity
-
- /** Unparsed index stores the pickled AST generated by the dottydoc tool */
- @sjs.native @JSName("UnparsedIndex") private object Unparsed extends sjs.Object {
- def packages: sjs.Dictionary[Package] = sjs.native
- def currentEntity: Entity = sjs.native
- }
-}
diff --git a/dottydoc/js/src/Search.scala b/dottydoc/js/src/Search.scala
deleted file mode 100644
index 6625e3c78..000000000
--- a/dottydoc/js/src/Search.scala
+++ /dev/null
@@ -1,121 +0,0 @@
-package dotty.tools.dottydoc
-package js
-
-import scala.scalajs.{ js => sjs }
-import sjs.timers.setTimeout
-import scalatags.JsDom.all._
-import org.scalajs.dom.html.{ Input, Div }
-import org.scalajs.dom.{ document, Event }
-import scala.concurrent.ExecutionContext.Implicits.global
-import scala.concurrent.Future
-
-import js.model._
-import js.model.ops._
-
-class Search(val input: Input) {
- private var isSearching = false
-
- private val mainDiv = document
- .getElementById("entity-container")
- .asInstanceOf[Div]
- private val resultsDiv = document
- .getElementById("search-results")
- .asInstanceOf[Div]
-
- /** Search result ADTs */
- private case class PackageResults(matching: Stream[Package], nonMatching: Stream[Package])
- private object PackageResults {
- def empty = PackageResults(Stream.empty, Stream.empty)
- }
-
- /** Entry point into search, will consider whether to start searching or not,
- * then call `performSearch`
- */
- def search(): Event => Unit = { e =>
- val query = input.value.trim
- if (query.length > 2) setTimeout(200) {
- if (!isSearching) {
- isSearching = true
- performSearch(query.toLowerCase).map { _ => isSearching = false }
- }
- }
- else if (query.length == 0)
- hideSearchDiv()
- }
-
- private def performSearch(query: String): Future[Unit] =
- for (PackageResults(matching, nonMatching) <- searchPackages(query)) yield {
- // Clear old results, add new result categories add close button
- resultsDiv.innerHTML = ""
- val toplevelRes = div(id := "toplevel-results").render
- val methodRes = div(id := "method-results").render
- val closeButton = button(
- id := "close-button",
- onclick := { _: Event =>
- resetInput()
- hideSearchDiv()
- },
- cls := "mdl-button mdl-js-button mdl-button--fab mdl-js-ripple-effect mdl-button--colored",
- i(cls := "material-icons", "clear")
- ).render
-
- resultsDiv.appendChild(toplevelRes)
- resultsDiv.appendChild(methodRes)
- resultsDiv.appendChild(closeButton)
-
- // Add all matching toplevel entities
- matching
- .toStream
- .sortBy(_.name)
- .map(createPackageCard)
- .foreach(toplevelRes.appendChild)
-
- // Hide entity and show results instead
- showSearchDiv()
- }
-
- private def searchPackages(query: String): Future[PackageResults] = Future {
- EntityIndex.packages.values.foldLeft(PackageResults.empty) { (acc, p) =>
- val matchingMembers = p.members.collect {
- case x if (x.name.toLowerCase.contains(query) && x.kind != "package") => x
- }
-
- println("We found all matching members maybe")
- sjs.Dynamic.global.console.log(p)
-
- if (p.name.toLowerCase.contains(query) || matchingMembers.nonEmpty)
- acc.copy(matching = p.withMembers(matchingMembers) #:: acc.matching)
- else acc
- }
- }
-
- private def createPackageCard(pack: Package): Div = div(
- cls := "mdl-card mdl-shadow--2dp package-result",
- div(cls := "mdl-card__title", h2(cls := "mdl-card__title-text", pack.name)),
- ul(pack.members.map(createEntityLi).toList)
- ).render
-
- private def createEntityLi(e: Entity) = li(
- a(
- href := toRoot + e.path.mkString("", "/", ".html"),
- e.kind + " " + e.name
- )
- )
-
- private def toRoot = "../" * (EntityIndex.currentEntity.path.length - 1)
-
- private def resetInput() = {
- input.value = ""
- input.parentElement.className = input.parentElement.className.replaceAll("is-dirty", "")
- }
-
- private def showSearchDiv() = {
- mainDiv.style.display = "none"
- resultsDiv.style.display = "block"
- }
-
- private def hideSearchDiv() = {
- resultsDiv.style.display = "none"
- mainDiv.style.display = "block"
- }
-}
diff --git a/dottydoc/js/src/html/CustomTags.scala b/dottydoc/js/src/html/CustomTags.scala
deleted file mode 100644
index af3667f11..000000000
--- a/dottydoc/js/src/html/CustomTags.scala
+++ /dev/null
@@ -1,13 +0,0 @@
-package dotty.tools.dottydoc
-package js
-package html
-
-import scalatags.JsDom.all._
-import scalatags.generic
-import scalatags.generic.Util
-import org.scalajs.dom
-
-object CustomTags {
- lazy val nav = "nav".tag
- lazy val main = "main".tag
-}
diff --git a/dottydoc/js/src/html/EntityLayout.scala b/dottydoc/js/src/html/EntityLayout.scala
deleted file mode 100644
index f81f42e02..000000000
--- a/dottydoc/js/src/html/EntityLayout.scala
+++ /dev/null
@@ -1,212 +0,0 @@
-package dotty.tools.dottydoc
-package js
-package html
-
-import scalatags.JsDom.all._
-import org.scalajs.dom
-import org.scalajs.dom.html.{Anchor, Div}
-import js.model._
-import js.model.ops._
-
-case class EntityLayout(entity: Entity) extends MemberLayout {
- import CustomTags._
- import EntityIndex.packages
-
- private def relativePath(to: Entity) = {
- val offset = entity.kind match {
- case "val" | "def" => 2
- case _ => 1
- }
-
- val prefix = entity.kind match {
- case "package" => "../"
- case _ => ""
- }
-
- prefix + {
- "../" * (entity.path.length - offset) + to.path.mkString("","/",".html")
- }
- }
-
- def html =
- div(
- cls := "mdl-layout mdl-js-layout mdl-layout--fixed-drawer",
- div(
- cls := "mdl-layout__drawer",
- span(
- cls := "mdl-layout-title subtitle",
- entity.path.dropRight(1).mkString(".")
- ),
- span(
- cls := "mdl-layout-title",
- if (entity.kind == "package") entity.name.split("\\.").last
- else entity.name
- ),
- nav(
- cls := "related mdl-navigation",
- companionAnchor,
- a(cls := "mdl-navigation__link", href := "#", "Source")
- ),
- span(
- cls := "mdl-layout-title",
- id := "docs-title",
- "Docs"
- ),
- searchView,
- packageView
- ),
- main(
- id := "entity-container",
- cls := "mdl-layout__content",
- div(
- cls := "page-content",
- div(cls := "entity-title", entityTitle),
- div(raw(entity.comment.fold("")(_.body))),
- entity.comment.filter(_.authors.nonEmpty).map { comment =>
- dl(
- dt(cls := "entity-authors", "Authors"),
- comment.authors.map(x => dd(cls := "entity-author", raw(x))).toList
- )
- }.toOption,
- entity match {
- case x if x.hasMembers =>
- val e = x.asInstanceOf[Entity with Members]
- if (e.members.nonEmpty)
- Seq(
- h5("Members"),
- div(
- cls := "mdl-grid",
- e.members
- .collect {
- case x if x.hasModifiers && !x.isPrivate => x
- }
- .flatMap(member(_, entity)).toList
- )
- )
- case _ => ()
- }
- )
- ),
- main(
- id := "search-results",
- cls := "mdl-layout__content"
- )
- )
-
- def packageView = ul(
- cls := "mdl-list packages",
- {
- val keys: Seq[String] = packages.keys.toSeq.sorted
- val productReg = """^Product[0-9]+$""".r
- keys.flatMap { k =>
- val pack = packages(k)
- val children =
- pack.children
- .sortBy(_.name)
- .filterNot { ent =>
- // Filter out ProductX where X > 3
- productReg.findFirstIn(ent.name).map(_.slice(7, 99).toInt > 3).getOrElse(false) ||
- // Filter out packages
- ent.kind == "package" ||
- // Filter out objects that have companions
- (ent.kind == "object" && companion(ent).isDefined) ||
- ent.name == "AnyValCompanion"
- }
- .map { entity =>
- val comp = companion(entity)
- val entityUrl = relativePath(entity)
- val compUrl = comp.map(relativePath).getOrElse("#")
- li(
- cls := s"""mdl-list__item entity ${ if (comp.isDefined) "two" else "one" }""",
- comp.map { _ => a(cls := "entity-button object", href := compUrl, "O") }.getOrElse(()),
- a(
- cls := s"""entity-button shadowed ${entity.kind.replaceAll(" ", "")}""",
- href := entityUrl,
- entity.kind(0).toUpper.toString
- ),
- a(
- cls := "entity-name",
- href := entityUrl,
- entity.name
- )
- )
- }
-
- if (children.length > 0)
- li(cls := "mdl-list__item package", href := relativePath(pack), k) :: children.toList
- else Nil
- }
- }
- )
-
-
- def entityTitle = {
- val modifiers = entity.kind match {
- case "Modifiers" =>
- val m = entity.asInstanceOf[Modifiers]
- if (m.modifiers.nonEmpty)
- Some(span(cls := "entity-modifiers", m.modifiers.mkString(" ")))
- else
- None
- case _ => None
- }
-
- val typeParams = entity match {
- case x if x.hasTypeParams =>
- val t = entity.asInstanceOf[TypeParams]
- if (t.typeParams.nonEmpty)
- Some(span(cls := "entity-type-params no-left-margin", t.typeParams.mkString("[", ", ", "]")))
- else None
- case _ => None
- }
-
- val superTypes = entity match {
- case x if x.hasSuperTypes =>
- val st = entity.asInstanceOf[SuperTypes]
- if (st.superTypes.nonEmpty)
- Some(span(
- cls := "entity-super-types",
- st.superTypes.collect {
- case x => x.title
- }.mkString("extends ", " with ", "")
- ))
- else None
- case _ => None
- }
-
- modifiers ::
- Some(span(cls := "entity-kind", entity.kind)) ::
- Some(span(cls := "entity-name", entity.name)) ::
- typeParams ::
- superTypes ::
- Nil
-
- }.flatten
-
- def companion(entity: Entity) = {
- val pack = entity.path.dropRight(1).mkString(".")
- for {
- p <- packages.get(pack)
- child <- p.children.find(e => e.name == entity.name && e.path.last != entity.path.last)
- } yield child
- }
-
- def companionAnchor =
- companion(entity).map { c =>
- a(
- cls := "mdl-navigation__link",
- href := c.path.last + ".html",
- "Companion " + c.kind
- )
- }.getOrElse(span())
-
- def searchView =
- div(
- cls := "search-container",
- div(
- cls := "mdl-textfield mdl-js-textfield mdl-textfield--floating-label",
- input(cls := "mdl-textfield__input", `type` := "text", id := "search"),
- label(cls := "mdl-textfield__label", `for` := "search", "Search")
- )
- )
-}
diff --git a/dottydoc/js/src/html/Member.scala b/dottydoc/js/src/html/Member.scala
deleted file mode 100644
index ec17b5021..000000000
--- a/dottydoc/js/src/html/Member.scala
+++ /dev/null
@@ -1,313 +0,0 @@
-package dotty.tools.dottydoc
-package js
-package html
-
-import scalatags.JsDom.all._
-import scalatags.JsDom.TypedTag
-import org.scalajs.dom
-import org.scalajs.dom.html.{Anchor, Div, Span}
-
-trait MemberLayout {
- import js.model._
- import js.model.ops._
-
- def member(m: Entity, parent: Entity) = {
- def toggleBetween(short: Div, and: Div): Unit =
- if (and.style.display == "none") {
- and.style.display = "block"
- short.style.display = "none"
- } else {
- and.style.display = "none"
- short.style.display = "block"
- }
-
- m.kind match {
- case "class" | "case class" | "object" | "trait" | "def" | "val" =>
- val entity = m.asInstanceOf[Entity with Modifiers]
- val shortComment = div(
- cls := "mdl-cell mdl-cell--12-col summary-comment",
- raw(m.comment.fold("")(_.short))
- ).render
-
- val fullComment = div(
- cls := "mdl-cell mdl-cell--12-col full-comment",
- style := "display: none;",
- fromImplicitSpan(m),
- raw(m.comment.fold("")(_.body))
- ).render
-
- val hasLongerFullComment = m.comment.fold(false) { c =>
- c.short.length + 5 < c.body.length
- }
-
- val divs = div(
- cls :=
- s"""
- mdl-cell mdl-cell--12-col member
- ${if (hasLongerFullComment) "member-fullcomment" else ""}
- """,
- onclick := { () => toggleBetween(shortComment, and = fullComment) },
- div(
- cls := "mdl-cell mdl-cell--12-col member-definition",
- span(
- cls := "member-modifiers-kind",
- entity.modifiers.mkString(" ") + " " + m.kind
- ),
- span(
- cls := { if (m.addedImplicitly) "member-name implicitly-added" else "member-name" },
- m.name
- ),
- spanWith("member-type-params no-left-margin", typeParams(m)),
- span(cls := "member-param-list no-left-margin", paramList(m)),
- returnValue(entity, parent)
- ),
- shortComment,
- fullComment
- )
- Seq(divs)
- case _ => Seq(h1("ERROR: " + m.name))
- }
- }
-
- def fromImplicitSpan(m: Entity) = m.foldImplicitlyAdded { ref =>
- span(
- "Implicitly added from: ",
- referenceToLinks(ref)
- )
- }.getOrElse(span())
-
- def spanWith(clazz: String, contents: String) = contents match {
- case "" => None
- case _ => Some(span(cls := clazz, contents))
- }
-
- def paramList(m: Entity): Span = m.kind match {
- case "def" =>
- val d = m.asInstanceOf[Def]
- if (d.paramLists.nonEmpty)
- span(
- cls := "member-param-lists",
- d.paramLists.map { xs =>
- span(
- cls := "param-list",
- "(",
- span(cls := "is-implicit no-left-margin", if (xs.isImplicit) "implicit " else ""),
- xs.list.flatMap { tr =>
- Seq(
- span(cls := "param-name", tr.title).render,
- span(cls := "type-separator no-left-margin", if (tr.isByName) ": =>" else ":").render,
- span(if (tr.ref.kind == "FunctionReference" && tr.isRepeated) "(" else "").render,
- span(referenceToLinks(tr.ref)).render,
- span(if (tr.ref.kind == "FunctionReference" && tr.isRepeated) ")*" else if (tr.isRepeated) "*" else "").render,
- span(cls := "type-separator no-left-margin", ",").render
- )
- }.toList.dropRight(1),
- ")"
- ).render
- }.toList
- ).render
- else span().render
- case _ => span().render
- }
-
- def referenceToLinks(ref: Reference): Span = {
- def linkToAnchor(link: MaterializableLink) = link.kind match {
- case "MaterializedLink" =>
- val (t, url) = (link.asInstanceOf[MaterializedLink].title, link.asInstanceOf[MaterializedLink].target)
- a(href := url, t).render
- case "NoLink" => span(link.title).render
-
- case "UnsetLink" =>
- println("UnsetLink found:")
- scala.scalajs.js.Dynamic.global.console.log(link)
- span(link.title).render
- }
-
- ref.kind match {
- case "TypeReference" =>
- val tref = ref.asInstanceOf[TypeReference]
- val infixTypes = "<:<" :: "=:=" :: Nil
- if (tref.paramLinks.length == 2 && infixTypes.contains(tref.title)) span(
- referenceToLinks(tref.paramLinks(0)),
- span(cls := "type-separator no-left-margin"),
- linkToAnchor(tref.tpeLink),
- span(cls := "type-separator no-left-margin"),
- referenceToLinks(tref.paramLinks(1))
- ).render
- else if (tref.paramLinks.nonEmpty) span(
- linkToAnchor(tref.tpeLink),
- "[",
- tref
- .paramLinks
- .map(referenceToLinks)
- .flatMap(link => Seq(link, span(cls := "type-separator no-left-margin", ",").render))
- .toList.dropRight(1),
- "]"
- ).render
- else span(linkToAnchor(tref.tpeLink)).render
-
- case "OrTypeReference" =>
- val (left, right) = (ref.asInstanceOf[OrTypeReference].left, ref.asInstanceOf[OrTypeReference].right)
- span(
- referenceToLinks(left),
- span(cls := "type-separator", "|"),
- referenceToLinks(right)
- ).render
-
- case "AndTypeReference" =>
- val (left, right) = (ref.asInstanceOf[AndTypeReference].left, ref.asInstanceOf[AndTypeReference].right)
- span(
- referenceToLinks(left),
- span(cls := "type-separator", "&"),
- referenceToLinks(right)
- ).render
-
- case "BoundsReference" =>
- val (low, high) = (ref.asInstanceOf[BoundsReference].low, ref.asInstanceOf[BoundsReference].high)
- span(
- referenceToLinks(low),
- span(cls := "type-separator", "<:"),
- referenceToLinks(high)
- ).render
-
- case "FunctionReference" => {
- val func = ref.asInstanceOf[FunctionReference]
- span(
- cls := "no-left-margin",
- if (func.args.length > 1) "(" else "",
- if (func.args.isEmpty)
- span("()")
- else func
- .args
- .map(referenceToLinks)
- .flatMap(link => Seq(link, span(cls := "type-separator no-left-margin", ",").render)).init.toList,
- if (func.args.length > 1) ") => " else " => ",
- referenceToLinks(func.returnValue)
- ).render
- }
-
- case "TupleReference" => {
- val func = ref.asInstanceOf[TupleReference]
- span(
- cls := "no-left-margin",
- "(",
- func
- .args
- .map(referenceToLinks)
- .flatMap(link => Seq(link, span(cls := "type-separator no-left-margin", ",").render)).init.toList,
- ")"
- ).render
- }
- }
- }
-
- def typeParams(m: Entity): String = m.kind match {
- case "def" =>
- val d = m.asInstanceOf[Def]
- if (d.typeParams.nonEmpty)
- d.typeParams.mkString("[", ", ", "]")
- else ""
- case _ => ""
- }
-
- def returnValue(m: Entity with Modifiers, parent: Entity) = {
- // shortens: "Option.this.A" => "A"
- def shorten(s: String): String = s.split('.').toList match {
- case x :: Nil => x
- case x :: xs if x == parent.name => xs.last
- case xs => s
- }
-
- def link(rv: Reference): Span = {
- def decodeTpeLink(link: MaterializableLink): Span = link.kind match {
- case "MaterializedLink" =>
- val ml = link.asInstanceOf[MaterializedLink]
- span(cls := "member-return-value", a(href := ml.target, ml.title)).render
- case "UnsetLink" =>
- val un = link.asInstanceOf[UnsetLink]
- span(cls := "member-return-value", shorten(un.query)).render
- case "NoLink" =>
- val no = link.asInstanceOf[NoLink]
- span(cls := "member-return-value", shorten(no.title)).render
- }
-
- rv.kind match {
- case "TypeReference" =>
- val trv = rv.asInstanceOf[TypeReference]
- val returnValue = decodeTpeLink(trv.tpeLink)
-
- if (trv.paramLinks.nonEmpty) span(
- returnValue,
- "[",
- trv.paramLinks
- .map(link)
- .flatMap { sp =>
- Seq(sp, span(cls := "type-separator no-left-margin", ",").render)
- }
- .toList.dropRight(1),
- "]"
- ).render
- else returnValue
-
- case "OrTypeReference" =>
- val (left, right) = (rv.asInstanceOf[OrTypeReference].left, rv.asInstanceOf[OrTypeReference].right)
- span(
- cls := "member-return-value or-type",
- link(left),
- span(cls := "type-separator", "|"),
- link(right)
- ).render
- case "AndTypeReference" =>
- val (left, right) = (rv.asInstanceOf[AndTypeReference].left, rv.asInstanceOf[AndTypeReference].right)
- span(
- cls := "member-return-value and-type",
- link(left),
- span(cls := "type-separator", "&"),
- link(right)
- ).render
-
- case "BoundsReference" =>
- val (low, high) = (rv.asInstanceOf[BoundsReference].low, rv.asInstanceOf[BoundsReference].high)
- span(
- link(low),
- span(cls := "type-separator", "<:"),
- link(high)
- ).render
- case "FunctionReference" =>
- val func = rv.asInstanceOf[FunctionReference]
- span(
- cls := "no-left-margin",
- if (func.args.length > 1) "(" else "",
- if (func.args.isEmpty)
- span("()")
- else func
- .args
- .map(link)
- .flatMap(link => Seq(link, span(cls := "type-separator no-left-margin", ",").render)).init.toList,
- if (func.args.length > 1) ") => " else " => ",
- link(func.returnValue)
- ).render
-
- case "TupleReference" => {
- val func = rv.asInstanceOf[TupleReference]
- span(
- cls := "no-left-margin",
- "(",
- func
- .args
- .map(link)
- .flatMap(link => Seq(link, span(cls := "type-separator no-left-margin", ",").render)).init.toList,
- ")"
- ).render
- }
- }
- }
-
- m.kind match {
- case "def" =>
- val rv = m.asInstanceOf[ReturnValue]
- Some(span(cls := "no-left-margin", ": ", link(rv.returnValue)))
- case _ => None
- }
- }
-}
diff --git a/dottydoc/js/src/model/entities.scala b/dottydoc/js/src/model/entities.scala
deleted file mode 100644
index ca1b5ec69..000000000
--- a/dottydoc/js/src/model/entities.scala
+++ /dev/null
@@ -1,180 +0,0 @@
-package dotty.tools
-package dottydoc
-package js
-package model
-
-import scala.scalajs.{ js => sjs }
-import sjs.annotation.ScalaJSDefined
-
-/** This file defines the interface for which to interact with the searchable
- * index. To use the normal operations available on the traits on the JVM:
- *
- * {{{
- * import dotty.tools.dottydoc.js.model.ops._
- * val x: Package = ...
- * }}}
- *
- * Please note that some of the actual fields have not been added to this
- * interface, this is simply due to the fact that they're not necessary for
- * search - YET. They could be added, for instance `comment` is missing.
- */
-@ScalaJSDefined
-trait Entity extends sjs.Object {
- val kind: String
- val name: String
- val path: sjs.Array[String]
- val comment: sjs.UndefOr[Comment]
-}
-
-@ScalaJSDefined
-trait Comment extends sjs.Object {
- val body: String
- val short: String
- val authors: sjs.Array[String]
- val see: sjs.Array[String]
- val result: sjs.UndefOr[String]
- val throws: Map[String, String]
- val valueParams: Map[String, String]
- val typeParams: Map[String, String]
- val version: sjs.UndefOr[String]
- val since: sjs.UndefOr[String]
- val todo: List[String]
- val deprecated: sjs.UndefOr[String]
- val note: List[String]
- val example: List[String]
- val constructor: sjs.UndefOr[String]
- val group: sjs.UndefOr[String]
- val groupDesc: Map[String, String]
- val groupNames: Map[String, String]
- val groupPrio: Map[String, String]
- val hideImplicitConversions: List[String]
-}
-
-@ScalaJSDefined
-trait Members extends sjs.Object {
- val members: sjs.Array[Entity]
-}
-
-@ScalaJSDefined
-trait Modifiers extends sjs.Object {
- val modifiers: sjs.Array[String]
-}
-
-@ScalaJSDefined
-trait ReturnValue extends sjs.Object {
- val returnValue: Reference
-}
-
-@ScalaJSDefined
-trait TypeParams extends sjs.Object {
- val typeParams: sjs.Array[String]
-}
-
-@ScalaJSDefined
-trait SuperTypes extends sjs.Object {
- val superTypes: sjs.Array[MaterializableLink]
-}
-
-@ScalaJSDefined
-trait Package extends Entity with Members
-
-@ScalaJSDefined
-trait Class extends Entity with Members with Modifiers with TypeParams
-
-@ScalaJSDefined
-trait CaseClass extends Class
-
-@ScalaJSDefined
-trait Object extends Entity with Members with Modifiers
-
-@ScalaJSDefined
-trait Trait extends Class
-
-@ScalaJSDefined
-trait ParamList extends sjs.Object {
- val list: sjs.Array[NamedReference]
- val isImplicit: Boolean
-}
-
-@ScalaJSDefined
-trait Def extends Entity with Modifiers with ReturnValue {
- val typeParams: sjs.Array[String]
- val paramLists: sjs.Array[ParamList]
- val implicitlyAddedFrom: sjs.UndefOr[Reference]
-}
-
-@ScalaJSDefined
-trait Val extends Entity with Modifiers {
- val implicitlyAddedFrom: sjs.UndefOr[Reference]
-}
-
-@ScalaJSDefined
-trait Var extends Entity with Modifiers {
- val implicitlyAddedFrom: sjs.UndefOr[Reference]
-}
-
-@ScalaJSDefined
-trait ImplicitlyAddedEntity extends Entity {
- val implicitlyAddedFrom: sjs.UndefOr[Reference]
-}
-
-object ops {
- val EntitiesWithModifiers =
- "case class" :: "class" :: "object" :: "trait" :: "def" :: "val" :: Nil
-
- val EntitiesWithMembers =
- "package" :: "case class" :: "class" :: "object" :: "trait" :: Nil
-
- val EntitiesWithTypeParams =
- "case class" :: "class" :: "trait" :: "def" :: Nil
-
- val EntitiesWithSuperTypes =
- "case class" :: "class" :: "trait" :: "object" :: Nil
-
- implicit class PackageOps(val p: Package) {
- def children: sjs.Array[Entity with Members] =
- p.members.collect {
- case x if EntitiesWithMembers contains x.kind =>
- x.asInstanceOf[Entity with Members]
- }
-
- def withMembers(mbrs: sjs.Array[Entity]): Package = new Package {
- val kind = p.kind
- val name = p.name
- val path = p.path
- val members = mbrs
- val comment = p.comment
- }
- }
-
- implicit class EntityOps(val ent: Entity) {
- def typeParams: sjs.Array[String] =
- if (ent.kind == "def")
- ent.asInstanceOf[Def].typeParams
- else sjs.Array()
-
- def hasMembers: Boolean =
- EntitiesWithMembers contains ent.kind
-
- def hasModifiers: Boolean =
- EntitiesWithModifiers contains ent.kind
-
- def hasTypeParams: Boolean =
- EntitiesWithTypeParams contains ent.kind
-
- def hasSuperTypes: Boolean =
- EntitiesWithSuperTypes contains ent.kind
-
- def isPrivate: Boolean =
- hasModifiers &&
- ent.asInstanceOf[Modifiers].modifiers.contains("private")
-
- def addedImplicitly: Boolean = (ent.kind == "def" || ent.kind == "val") && {
- ent.asInstanceOf[ImplicitlyAddedEntity].implicitlyAddedFrom.isDefined
- }
-
- def foldImplicitlyAdded[B](f: Reference => B): sjs.UndefOr[B] =
- if (ent.kind == "def" || ent.kind == "val") ent.asInstanceOf[ImplicitlyAddedEntity].implicitlyAddedFrom.map(f)
- else sjs.undefined
- }
-}
diff --git a/dottydoc/js/src/model/references.scala b/dottydoc/js/src/model/references.scala
deleted file mode 100644
index 051251b68..000000000
--- a/dottydoc/js/src/model/references.scala
+++ /dev/null
@@ -1,84 +0,0 @@
-package dotty.tools
-package dottydoc
-package js
-package model
-
-import scala.scalajs.{ js => sjs }
-import sjs.annotation.ScalaJSDefined
-
-/** Type References */
-@ScalaJSDefined
-sealed trait Reference extends sjs.Object {
- val kind: String
-}
-
-@ScalaJSDefined
-trait TypeReference extends Reference {
- val title: String
- val tpeLink: MaterializableLink
- val paramLinks: sjs.Array[Reference]
-}
-
-@ScalaJSDefined
-trait OrTypeReference extends Reference {
- val left: Reference
- val right: Reference
-}
-
-@ScalaJSDefined
-trait AndTypeReference extends Reference {
- val left: Reference
- val right: Reference
-}
-
-@ScalaJSDefined
-trait BoundsReference extends Reference {
- val low: Reference
- val high: Reference
-}
-
-@ScalaJSDefined
-trait NamedReference extends Reference {
- val title: String
- val ref: Reference
- val isByName: Boolean
- val isRepeated: Boolean
-}
-
-@ScalaJSDefined
-trait ConstantReference extends Reference {
- val title: String
-}
-
-@ScalaJSDefined
-trait FunctionReference extends Reference {
- val args: sjs.Array[Reference]
- val returnValue: Reference
-}
-
-@ScalaJSDefined
-trait TupleReference extends Reference {
- val args: sjs.Array[Reference]
-}
-
-/** Materializable links */
-@ScalaJSDefined
-sealed trait MaterializableLink extends sjs.Object {
- val kind: String
- val title: String
-}
-
-@ScalaJSDefined
-trait UnsetLink extends MaterializableLink {
- val query: String
-}
-
-@ScalaJSDefined
-trait MaterializedLink extends MaterializableLink {
- val target: String
-}
-
-@ScalaJSDefined
-trait NoLink extends MaterializableLink {
- val target: String
-}