aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dottydoc/js/src/EntityIndex.scala9
-rw-r--r--dottydoc/js/src/html/EntityLayout.scala59
-rw-r--r--dottydoc/js/src/html/Member.scala188
-rw-r--r--dottydoc/js/src/model/entities.scala52
-rw-r--r--dottydoc/js/src/model/references.scala65
-rw-r--r--dottydoc/jvm/src/dotty/tools/dottydoc/core/TypeLinkingPhases.scala6
-rw-r--r--dottydoc/jvm/src/dotty/tools/dottydoc/html/EntityPage.scala7
-rw-r--r--dottydoc/jvm/src/dotty/tools/dottydoc/model/json.scala16
-rw-r--r--dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/comment/BodyEntities.scala4
-rw-r--r--dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/factories.scala6
-rw-r--r--dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/pickling.scala44
-rw-r--r--project/Build.scala2
12 files changed, 279 insertions, 179 deletions
diff --git a/dottydoc/js/src/EntityIndex.scala b/dottydoc/js/src/EntityIndex.scala
index b6fe1842f..358298ca0 100644
--- a/dottydoc/js/src/EntityIndex.scala
+++ b/dottydoc/js/src/EntityIndex.scala
@@ -10,21 +10,16 @@ import sjs.annotation.JSName
/** The unpickled AST available as scala classes */
object EntityIndex {
- import prickle._
- import dottydoc.model.pickling._
import js.model._
lazy val packages: Map[String, Package] =
Unparsed.packages.toMap[String, Package]
- val currentEntity: dottydoc.model.Entity = Unpickle[dottydoc.model.Entity]
- .fromString(sjs.JSON.stringify(Unparsed.currentEntity))
- .toOption
- .get
+ 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: sjs.Object = sjs.native
+ def currentEntity: Entity = sjs.native
}
}
diff --git a/dottydoc/js/src/html/EntityLayout.scala b/dottydoc/js/src/html/EntityLayout.scala
index 37a72c73d..e08425c24 100644
--- a/dottydoc/js/src/html/EntityLayout.scala
+++ b/dottydoc/js/src/html/EntityLayout.scala
@@ -5,8 +5,8 @@ package html
import scalatags.JsDom.all._
import org.scalajs.dom
import org.scalajs.dom.html.{Anchor, Div}
-import dotty.tools.dottydoc.model._
-import dotty.tools.dottydoc.model.comment.{ UnsetLink, Text }
+import js.model._
+import js.model.ops._
case class EntityLayout(entity: Entity) extends MemberLayout {
def html = div(
@@ -14,40 +14,55 @@ case class EntityLayout(entity: Entity) extends MemberLayout {
div(cls := "entity-title", entityTitle),
div(raw(entity.comment.fold("")(_.body))),
entity match {
- case e: Entity with Members if e.members.nonEmpty =>
- Seq(
- h5("Members"),
- div(
- cls := "mld-grid",
- e.members
- .collect { case x: Entity with Modifiers if !x.isPrivate => x}
- .flatMap(member(_, entity))
+ case x if x.hasMembers =>
+ val e = x.asInstanceOf[Entity with Members]
+ if (e.members.nonEmpty)
+ Seq(
+ h5("Members"),
+ div(
+ cls := "mld-grid",
+ e.members
+ .collect {
+ case x if x.hasModifiers && !x.isPrivate => x
+ }
+ .flatMap(member(_, entity)).toList
+ )
)
- )
case _ => ()
}
)
def entityTitle = {
- val modifiers = entity match {
- case m: Modifiers if m.modifiers.nonEmpty =>
- Some(span(cls := "entity-modifiers", m.modifiers.mkString(" ")))
+ 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 t: TypeParams if t.typeParams.nonEmpty =>
- Some(span(cls := "entity-type-params no-left-margin", t.typeParams.mkString("[", ", ", "]")))
+ 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 st: SuperTypes => Some(span(
- cls := "entity-super-types",
- st.superTypes.collect {
- case unset: UnsetLink => unset.title.asInstanceOf[Text].text
- }.mkString("extends ", " with ", "")
- ))
+ 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
}
diff --git a/dottydoc/js/src/html/Member.scala b/dottydoc/js/src/html/Member.scala
index a8da9d126..1786f745a 100644
--- a/dottydoc/js/src/html/Member.scala
+++ b/dottydoc/js/src/html/Member.scala
@@ -8,8 +8,7 @@ import org.scalajs.dom
import org.scalajs.dom.html.{Anchor, Div, Span}
trait MemberLayout {
- import dotty.tools.dottydoc.model._
- import dotty.tools.dottydoc.model.comment._
+ import js.model._
def member(m: Entity, parent: Entity) = {
def toggleBetween(short: Div, and: Div): Unit =
@@ -21,8 +20,9 @@ trait MemberLayout {
short.style.display = "block"
}
- m match {
- case m: Entity with Modifiers =>
+ 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))
@@ -50,7 +50,7 @@ trait MemberLayout {
cls := "mdl-cell mdl-cell--12-col member-definition",
span(
cls := "member-modifiers-kind",
- m.modifiers.mkString(" ") + " " + m.kind
+ entity.modifiers.mkString(" ") + " " + m.kind
),
span(
cls := "member-name",
@@ -58,13 +58,13 @@ trait MemberLayout {
),
spanWith("member-type-params no-left-margin", typeParams(m)),
span(cls := "member-param-list no-left-margin", paramList(m)),
- returnValue(m, parent)
+ returnValue(entity, parent)
),
shortComment,
fullComment
)
Seq(divs)
- case x => Seq(h1("ERROR: " + x.name))
+ case _ => Seq(h1("ERROR: " + m.name))
}
}
@@ -73,67 +73,82 @@ trait MemberLayout {
case _ => Some(span(cls := clazz, contents))
}
- def paramList(m: Entity): Span = m match {
- case d: Def if d.paramLists.nonEmpty =>
- span(
- cls := "member-param-lists",
- d.paramLists.map { xs =>
- span(
- cls := "param-list",
- "(",
- xs.flatMap { tr =>
- Seq(
- span(cls := "param-name", tr.title).render,
- span(cls := "type-separator no-left-margin", ":").render,
- span(referenceToLinks(tr.ref)).render,
- span(cls := "type-separator no-left-margin", ",").render
- )
- }.dropRight(1),
- ")"
- ).render
- }
- ).render
+ 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",
+ "(",
+ xs.flatMap { tr =>
+ Seq(
+ span(cls := "param-name", tr.title).render,
+ span(cls := "type-separator no-left-margin", ":").render,
+ span(referenceToLinks(tr.ref)).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 match {
- case MaterializedLink(t, url) => a(href := url, t).render
- case NoLink(t, _) => span(t).render
+ 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
//FIXME: there should be no UnsetLinks - either MaterializedLink or NoLink
- case UnsetLink(_, q) => span(q).render
+ case "UnsetLink" => span(link.title).render
}
- ref match {
- case ref: TypeReference if ref.paramLinks.nonEmpty => span(
- linkToAnchor(ref.tpeLink),
- "[",
- ref
- .paramLinks
- .map(linkToAnchor)
- .flatMap(link => Seq(link, span(cls := "type-separator no-left-margin", ",").render))
- .dropRight(1),
- "]"
- ).render
- case ref: TypeReference => span(linkToAnchor(ref.tpeLink)).render
-
- case OrTypeReference(left, right) => span(
- referenceToLinks(left),
- span(cls := "type-separator", "|"),
- referenceToLinks(right)
- ).render
-
- case AndTypeReference(left, right) => span(
- referenceToLinks(left),
- span(cls := "type-separator", "&"),
- referenceToLinks(right)
- ).render
+ ref.kind match {
+ case "TypeReference" =>
+ val tref = ref.asInstanceOf[TypeReference]
+ if (tref.paramLinks.nonEmpty) span(
+ linkToAnchor(tref.tpeLink),
+ "[",
+ tref
+ .paramLinks
+ .map(linkToAnchor)
+ .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
}
}
- def typeParams(m: Entity): String = m match {
- case d: Def if d.typeParams.nonEmpty => d.typeParams.mkString("[", ", ", "]")
+ def typeParams(m: Entity): String = m.kind match {
+ case "def" =>
+ val d = m.asInstanceOf[Def]
+ if (d.typeParams.nonEmpty)
+ d.typeParams.mkString("[", ", ", "]")
+ else ""
case _ => ""
}
@@ -146,50 +161,59 @@ trait MemberLayout {
}
def link(rv: Reference): Span = {
- def decodeTpeLink: MaterializableLink => Span = {
- case ml: MaterializedLink =>
- println(s"received tpeLink: $ml")
+ 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 un: UnsetLink =>
+ case "UnsetLink" =>
+ val un = link.asInstanceOf[UnsetLink]
span(cls := "member-return-value", shorten(un.query)).render
- case no: NoLink =>
+ case "NoLink" =>
+ val no = link.asInstanceOf[NoLink]
span(cls := "member-return-value", shorten(no.title)).render
}
- rv match {
- case rv: TypeReference =>
- val returnValue = decodeTpeLink(rv.tpeLink)
+ rv.kind match {
+ case "TypeReference" =>
+ val trv = rv.asInstanceOf[TypeReference]
+ val returnValue = decodeTpeLink(trv.tpeLink)
- if (rv.paramLinks.nonEmpty) span(
+ if (trv.paramLinks.nonEmpty) span(
returnValue,
"[",
- rv.paramLinks
+ trv.paramLinks
.map(decodeTpeLink)
.flatMap { sp =>
Seq(sp, span(cls := "type-separator no-left-margin", ",").render)
}
- .dropRight(1),
+ .toList.dropRight(1),
"]"
).render
else returnValue
- case OrTypeReference(left, right) => span(
- cls := "member-return-value or-type",
- link(left),
- span(cls := "type-separator", "|"),
- link(right)
- ).render
- case AndTypeReference(left, right) => span(
- cls := "member-return-value and-type",
- link(left),
- span(cls := "type-separator", "&"),
- link(right)
- ).render
+ 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
}
}
- m match {
- case rv: ReturnValue => Some(span(cls := "no-left-margin", ": ", link(rv.returnValue)))
+ 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
index a50a04271..adf7bc4ca 100644
--- a/dottydoc/js/src/model/entities.scala
+++ b/dottydoc/js/src/model/entities.scala
@@ -23,6 +23,13 @@ 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
}
@ScalaJSDefined
@@ -36,6 +43,21 @@ trait Modifiers extends sjs.Object {
}
@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
@@ -51,9 +73,9 @@ trait Object extends Class
trait Trait extends Class
@ScalaJSDefined
-trait Def extends Entity with Modifiers {
+trait Def extends Entity with Modifiers with ReturnValue {
val typeParams: sjs.Array[String]
- //val paramLists: sjs.Array[sjs.Array[(String, _)]]
+ val paramLists: sjs.Array[sjs.Array[NamedReference]]
}
@ScalaJSDefined
@@ -63,9 +85,18 @@ trait Val extends Entity with Modifiers
trait Var extends Entity with Modifiers
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 {
@@ -78,6 +109,7 @@ object ops {
val name = p.name
val path = p.path
val members = mbrs
+ val comment = p.comment
}
}
@@ -86,5 +118,21 @@ object ops {
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")
}
}
diff --git a/dottydoc/js/src/model/references.scala b/dottydoc/js/src/model/references.scala
new file mode 100644
index 000000000..8e725b5d9
--- /dev/null
+++ b/dottydoc/js/src/model/references.scala
@@ -0,0 +1,65 @@
+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[MaterializableLink]
+}
+
+@ScalaJSDefined
+trait OrTypeReference extends Reference {
+ val left: Reference
+ val right: Reference
+}
+
+@ScalaJSDefined
+trait AndTypeReference extends Reference {
+ val left: Reference
+ val right: Reference
+}
+
+@ScalaJSDefined
+trait NamedReference extends Reference {
+ val title: String
+ val ref: Reference
+}
+
+@ScalaJSDefined
+trait ConstantReference extends Reference {
+ val title: String
+}
+
+/** 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
+}
diff --git a/dottydoc/jvm/src/dotty/tools/dottydoc/core/TypeLinkingPhases.scala b/dottydoc/jvm/src/dotty/tools/dottydoc/core/TypeLinkingPhases.scala
index 6d8e85d87..105aeaef6 100644
--- a/dottydoc/jvm/src/dotty/tools/dottydoc/core/TypeLinkingPhases.scala
+++ b/dottydoc/jvm/src/dotty/tools/dottydoc/core/TypeLinkingPhases.scala
@@ -42,7 +42,7 @@ trait TypeLinker extends MemberLookup {
rv match {
case rv @ TypeReference(_, UnsetLink(t, query), tps) =>
val inlineToHtml = InlineToHtml(ent)
- val title = inlineToHtml(t)
+ val title = t
def handleEntityLink(title: String, lt: LinkTo): MaterializableLink = lt match {
case Tooltip(str) => NoLink(title, str)
@@ -50,11 +50,11 @@ trait TypeLinker extends MemberLookup {
case LinkToEntity(target) => MaterializedLink(title, util.traversing.relativePath(ent, target))
}
- val target = handleEntityLink(title, makeEntityLink(ent, packs, t, NoPosition, query).link)
+ val target = handleEntityLink(title, makeEntityLink(ent, packs, Text(t), NoPosition, query).link)
val tpTargets = tps.map {
case UnsetLink(t, query) =>
- handleEntityLink(inlineToHtml(t), makeEntityLink(ent, packs, t, NoPosition, query).link)
+ handleEntityLink(t, makeEntityLink(ent, packs, Text(t), NoPosition, query).link)
case x => x
}
diff --git a/dottydoc/jvm/src/dotty/tools/dottydoc/html/EntityPage.scala b/dottydoc/jvm/src/dotty/tools/dottydoc/html/EntityPage.scala
index 8496a11b8..f1abafc8b 100644
--- a/dottydoc/jvm/src/dotty/tools/dottydoc/html/EntityPage.scala
+++ b/dottydoc/jvm/src/dotty/tools/dottydoc/html/EntityPage.scala
@@ -2,13 +2,12 @@ package dotty.tools.dottydoc
package html
import scalatags.Text.all._
-import model.internal._
import model._
case class EntityPage(entity: Entity, packages: Map[String, Package]) {
import CustomTags._
- import model.pickling._
- import prickle._
+ import spray.json._
+ import model.json._
import util.internal.setters._
private def relPath(to: String, from: Entity) = {
@@ -79,7 +78,7 @@ case class EntityPage(entity: Entity, packages: Map[String, Package]) {
)
),
script(
- raw(s"""|UnparsedIndex.currentEntity = ${Pickle.intoString(entity.flat)};
+ raw(s"""|UnparsedIndex.currentEntity = ${entity.flat.toJson};
|dotty.tools.dottydoc.js.DottyDocJS()
| .main(document.getElementById("entity-container"));
""".stripMargin)
diff --git a/dottydoc/jvm/src/dotty/tools/dottydoc/model/json.scala b/dottydoc/jvm/src/dotty/tools/dottydoc/model/json.scala
index 71ed12cec..0b6c00a84 100644
--- a/dottydoc/jvm/src/dotty/tools/dottydoc/model/json.scala
+++ b/dottydoc/jvm/src/dotty/tools/dottydoc/model/json.scala
@@ -27,20 +27,20 @@ object json extends DefaultJsonProtocol {
implicit object MaterializableLinkFormat extends RootJsonFormat[MaterializableLink] {
def write(obj: MaterializableLink) = obj match {
- case obj: MaterializedLink => obj.toJson
- case obj: UnsetLink => obj.toJson
- case obj: NoLink => obj.toJson
+ case obj: MaterializedLink => addKind(obj.toJson, "MaterializedLink")
+ case obj: UnsetLink => addKind(obj.toJson, "UnsetLink")
+ case obj: NoLink => addKind(obj.toJson, "NoLink")
}
def read(json: JsValue) = ??? // The json serialization is supposed to be one way
}
implicit object ReferenceFormat extends RootJsonFormat[Reference] {
def write(obj: Reference) = obj match {
- case obj: AndTypeReference => obj.toJson
- case obj: OrTypeReference => obj.toJson
- case obj: TypeReference => obj.toJson
- case obj: NamedReference => obj.toJson
- case obj: ConstantReference => obj.toJson
+ case obj: AndTypeReference => addKind(obj.toJson, "AndTypeReference")
+ case obj: OrTypeReference => addKind(obj.toJson, "OrTypeReference")
+ case obj: TypeReference => addKind(obj.toJson, "TypeReference")
+ case obj: NamedReference => addKind(obj.toJson, "NamedReference")
+ case obj: ConstantReference => addKind(obj.toJson, "ConstantReference")
}
def read(json: JsValue) = ??? // The json serialization is supposed to be one way
}
diff --git a/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/comment/BodyEntities.scala b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/comment/BodyEntities.scala
index 37f1b05fe..526eff50c 100644
--- a/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/comment/BodyEntities.scala
+++ b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/comment/BodyEntities.scala
@@ -94,8 +94,8 @@ final case class Tooltip(name: String) extends LinkTo
final case class LinkToEntity(entity: Entity) extends LinkTo
/** Use MaterializableLink for entities that need be picklable */
-sealed trait MaterializableLink { def title: Any }
-final case class UnsetLink(title: Inline, query: String) extends MaterializableLink
+sealed trait MaterializableLink { def title: String }
+final case class UnsetLink(title: String, query: String) extends MaterializableLink
final case class MaterializedLink(title: String, target: String) extends MaterializableLink
final case class NoLink(title: String, target: String) extends MaterializableLink
diff --git a/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/factories.scala b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/factories.scala
index c2c7f9940..452c1a3b4 100644
--- a/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/factories.scala
+++ b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/factories.scala
@@ -51,7 +51,7 @@ object factories {
def returnType(t: Type)(implicit ctx: Context): Reference = {
def typeRef(name: String, query: String = "", params: List[MaterializableLink] = Nil) = {
val realQuery = if (query != "") query else name
- TypeReference(name, UnsetLink(Text(name), realQuery), params)
+ TypeReference(name, UnsetLink(name, realQuery), params)
}
def expandTpe(t: Type, params: List[MaterializableLink] = Nil): Reference = t match {
@@ -61,7 +61,7 @@ object factories {
ta.alias.asInstanceOf[NamedType].name.show
case _ => rn.show
}).split("\\$").last
- val param = UnsetLink(Text(paramName), paramName)
+ val param = UnsetLink(paramName, paramName)
expandTpe(parent, param :: params)
}
case TypeRef(_, n) =>
@@ -140,7 +140,7 @@ object factories {
cd.classParents.collect {
case t: TypeRef if !isJavaLangObject(t) && !isProductWithArity(t) =>
- UnsetLink(Text(t.name.toString), path(t.symbol).mkString("."))
+ UnsetLink(t.name.toString, path(t.symbol).mkString("."))
}
case _ => Nil
}
diff --git a/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/pickling.scala b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/pickling.scala
deleted file mode 100644
index 76a2effa6..000000000
--- a/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/pickling.scala
+++ /dev/null
@@ -1,44 +0,0 @@
-package dotty.tools.dottydoc
-package model
-
-object pickling {
- import internal._
- import prickle._
- import comment._
-
- implicit val inlinePickler: PicklerPair[Inline] = CompositePickler[Inline]
- .concreteType[Chain]
- .concreteType[Italic]
- .concreteType[Bold]
- .concreteType[Underline]
- .concreteType[Superscript]
- .concreteType[Subscript]
- .concreteType[Link]
- .concreteType[Monospace]
- .concreteType[Text]
-
- implicit val entityLinkPicker: PicklerPair[MaterializableLink] = CompositePickler[MaterializableLink]
- .concreteType[UnsetLink]
- .concreteType[NoLink]
- .concreteType[MaterializedLink]
-
- implicit val referencePicker: PicklerPair[Reference] = CompositePickler[Reference]
- .concreteType[TypeReference]
- .concreteType[OrTypeReference]
- .concreteType[AndTypeReference]
- .concreteType[NamedReference]
- .concreteType[ConstantReference]
-
- implicit val entityPickler: PicklerPair[Entity] = CompositePickler[Entity]
- .concreteType[NonEntity.type]
- .concreteType[ValImpl]
- .concreteType[DefImpl]
- .concreteType[ClassImpl]
- .concreteType[CaseClassImpl]
- .concreteType[ObjectImpl]
- .concreteType[TraitImpl]
- .concreteType[PackageImpl]
-
- implicit val packagePickler: PicklerPair[Package] = CompositePickler[Package]
- .concreteType[PackageImpl]
-}
diff --git a/project/Build.scala b/project/Build.scala
index 48bdd987a..09f465d49 100644
--- a/project/Build.scala
+++ b/project/Build.scala
@@ -268,7 +268,6 @@ object DottyInjectedPlugin extends AutoPlugin {
.jsSettings(
libraryDependencies ++= Seq(
"org.scala-js" %%% "scalajs-dom" % "0.9.0",
- "com.github.benhutchison" %%% "prickle" % "1.1.10",
"com.lihaoyi" %%% "scalatags" % "0.5.5"
)
)
@@ -286,7 +285,6 @@ object DottyInjectedPlugin extends AutoPlugin {
libraryDependencies ++= Seq(
"org.scala-js" % "scalajs-dom_sjs0.6_2.11" % "0.9.0",
- "com.github.benhutchison" %% "prickle" % "1.1.10",
"io.spray" %% "spray-json" % "1.3.2",
"com.lihaoyi" %% "scalatags" % "0.5.5",
"com.novocode" % "junit-interface" % "0.11" % "test"