aboutsummaryrefslogtreecommitdiff
path: root/dottydoc/shared/src
diff options
context:
space:
mode:
Diffstat (limited to 'dottydoc/shared/src')
-rw-r--r--dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/Entity.scala57
-rw-r--r--dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/EntityFactories.scala2
-rw-r--r--dottydoc/shared/src/main/scala/dotty/tools/dottydoc/util/Traversing.scala13
3 files changed, 54 insertions, 18 deletions
diff --git a/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/Entity.scala b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/Entity.scala
index 9bd175fde..675bc8319 100644
--- a/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/Entity.scala
+++ b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/Entity.scala
@@ -11,13 +11,20 @@ object Entities {
sealed trait Entity {
def name: String
+ /** Path from root, i.e. `scala.Option$` */
def path: List[String]
def comment: Option[Comment]
- val sourceUrl: String = "#"
+ def sourceUrl: String = "#"
- val kind: String
+ def kind: String
+
+ def parent: Option[Entity]
+
+ /** All parents from package level i.e. Package to Object to Member etc */
+ def parents: List[Entity] =
+ parent.map(p => p :: p.parents).getOrElse(Nil)
}
sealed trait Members {
@@ -34,11 +41,12 @@ object Entities {
final case class Package(
name: String,
members: List[Entity],
- comment: Option[Comment],
- path: List[String]
- ) extends Entity {
+ path: List[String],
+ var comment: Option[Comment] = None
+ ) extends Entity with Members {
override val kind = "package"
+ var parent: Option[Entity] = None
val children: List[PackageMember] =
members.collect { case x: PackageMember => x }
}
@@ -46,59 +54,65 @@ object Entities {
final case class Class(
name: String,
members: List[Entity],
- comment: Option[Comment],
modifiers: List[String],
- path: List[String]
+ path: List[String],
+ var comment: Option[Comment] = None
) extends Entity with Members with Modifiers {
override val kind = "class"
+ var parent: Option[Entity] = None
}
final case class CaseClass(
name: String,
members: List[Entity],
- comment: Option[Comment],
modifiers: List[String],
- path: List[String]
+ path: List[String],
+ var comment: Option[Comment] = None
) extends Entity with Members with Modifiers {
override val kind = "case class"
+ var parent: Option[Entity] = None
}
final case class Trait(
name: String,
members: List[Entity],
- comment: Option[Comment],
modifiers: List[String],
- path: List[String]
+ path: List[String],
+ var comment: Option[Comment] = None
) extends Entity with Members with Modifiers {
override val kind = "trait"
+ var parent: Option[Entity] = None
}
final case class Object(
name: String,
members: List[Entity],
- comment: Option[Comment],
modifiers: List[String],
- path: List[String]
+ path: List[String],
+ var comment: Option[Comment] = None
) extends Entity with Members with Modifiers {
override val kind = "object"
+ var parent: Option[Entity] = None
}
final case class Def(
name: String,
- comment: Option[Comment],
modifiers: List[String],
- path: List[String]
+ path: List[String],
+ var comment: Option[Comment] = None
) extends Entity with Modifiers {
override val kind = "def"
+ var parent: Option[Entity] = None
}
final case class Val(
name: String,
- comment: Option[Comment],
modifiers: List[String],
- path: List[String]
+ path: List[String],
+ var comment: Option[Comment] = None
) extends Entity with Modifiers {
override val kind = "val"
+ var parent: Option[Entity] = None
}
/** This object is used to represent entities that are to be filtered out */
@@ -107,6 +121,15 @@ object Entities {
override val comment = None
override val path = Nil
override val kind = ""
+ override val parent = None
+ }
+
+ final case object RootEntity extends Entity {
+ override val name = "root"
+ override val comment = None
+ override val path = Nil
+ override val kind = ""
+ override val parent = None
}
//implicit val pMPickler: PicklerPair[PackageMember] = CompositePickler[PackageMember]
diff --git a/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/EntityFactories.scala b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/EntityFactories.scala
index 5e459a766..09510a1f8 100644
--- a/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/EntityFactories.scala
+++ b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/EntityFactories.scala
@@ -16,7 +16,7 @@ object EntityFactories {
def flags(t: Tree)(implicit ctx: Context): List[String] =
(t.symbol.flags & SourceModifierFlags).flagStrings.toList
- def path(t: Tree, name: String)(implicit ctx: Context): List[String] = {
+ def path(t: Tree)(implicit ctx: Context): List[String] = {
def pathList(tpe: Type): List[String] = tpe match {
case t: ThisType =>
pathList(t.tref)
diff --git a/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/util/Traversing.scala b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/util/Traversing.scala
new file mode 100644
index 000000000..1aa07dec1
--- /dev/null
+++ b/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/util/Traversing.scala
@@ -0,0 +1,13 @@
+package dotty.tools.dottydoc
+package util
+
+object Traversing {
+ import model.Entities._
+
+ def mutateEntities(e: Entity)(trans: Entity => Unit): Unit = e match {
+ case e: Entity with Members =>
+ trans(e)
+ e.members.map(mutateEntities(_)(trans))
+ case e: Entity => trans(e)
+ }
+}