diff options
Diffstat (limited to 'dottydoc/shared/src/main/scala')
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) + } +} |