aboutsummaryrefslogtreecommitdiff
path: root/dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/Entity.scala
diff options
context:
space:
mode:
Diffstat (limited to 'dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/Entity.scala')
-rw-r--r--dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/Entity.scala57
1 files changed, 40 insertions, 17 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]