Skip to content

Commit f084357

Browse files
committed
Add implicit method flat to Entity
This method can be used when pickling the `currentEntity` on each page
1 parent 2010a93 commit f084357

File tree

3 files changed

+27
-2
lines changed

3 files changed

+27
-2
lines changed

dottydoc/jvm/src/dotty/tools/dottydoc/html/EntityPage.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ case class EntityPage(entity: Entity, packages: Map[String, Package]) {
99
import CustomTags._
1010
import model.pickling._
1111
import prickle._
12+
import util.internal.setters._
1213

1314
private def relPath(to: String, from: Entity) =
1415
"../" * from.path.length + to
@@ -68,7 +69,7 @@ case class EntityPage(entity: Entity, packages: Map[String, Package]) {
6869
)
6970
),
7071
script(
71-
raw(s"""|UnparsedIndex.currentEntity = ${Pickle.intoString(entity)};
72+
raw(s"""|UnparsedIndex.currentEntity = ${Pickle.intoString(entity.flat)};
7273
|dotty.tools.dottydoc.js.DottyDocJS()
7374
| .main(document.getElementById("entity-container"));
7475
""".stripMargin)

dottydoc/jvm/src/dotty/tools/dottydoc/util/mutate.scala

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,29 @@ object setters {
3636
e.parent = to
3737
case _ => ()
3838
}
39+
40+
implicit class FlattenedEntity(val ent: Entity) extends AnyVal {
41+
/** Returns a flat copy if anything was changed (Entity with Members) else
42+
* the identity
43+
*/
44+
def flat: Entity = {
45+
def flattenMember: Entity => Entity = {
46+
case e: PackageImpl => e.copy(members = Nil)
47+
case e: ObjectImpl => e.copy(members = Nil)
48+
case e: CaseClassImpl => e.copy(members = Nil)
49+
case e: ClassImpl => e.copy(members = Nil)
50+
case e: TraitImpl => e.copy(members = Nil)
51+
case other => other
52+
}
53+
54+
ent match {
55+
case e: PackageImpl => e.copy(members = e.members.map(flattenMember))
56+
case e: ObjectImpl => e.copy(members = e.members.map(flattenMember))
57+
case e: CaseClassImpl => e.copy(members = e.members.map(flattenMember))
58+
case e: ClassImpl => e.copy(members = e.members.map(flattenMember))
59+
case e: TraitImpl => e.copy(members = e.members.map(flattenMember))
60+
case other => other
61+
}
62+
}
63+
}
3964
}

dottydoc/shared/src/main/scala/dotty/tools/dottydoc/model/factories.scala

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import dotc.core.Contexts.Context
77
import dotc.core.Symbols.Symbol
88
import dotc.core.{ Flags => DottyFlags }
99
import dotc.ast.Trees._
10-
import DottyFlags.FlagSet
1110

1211
object factories {
1312
import dotty.tools.dotc.ast.tpd._

0 commit comments

Comments
 (0)