diff options
Diffstat (limited to 'dottydoc/js')
-rw-r--r-- | dottydoc/js/src/html/Member.scala | 12 | ||||
-rw-r--r-- | dottydoc/js/src/model/entities.scala | 22 |
2 files changed, 30 insertions, 4 deletions
diff --git a/dottydoc/js/src/html/Member.scala b/dottydoc/js/src/html/Member.scala index a62a1ab34..dbd1883fa 100644 --- a/dottydoc/js/src/html/Member.scala +++ b/dottydoc/js/src/html/Member.scala @@ -9,6 +9,7 @@ import org.scalajs.dom.html.{Anchor, Div, Span} trait MemberLayout { import js.model._ + import js.model.ops._ def member(m: Entity, parent: Entity) = { def toggleBetween(short: Div, and: Div): Unit = @@ -31,10 +32,10 @@ trait MemberLayout { val fullComment = div( cls := "mdl-cell mdl-cell--12-col full-comment", style := "display: none;", + fromImplicitSpan(m), raw(m.comment.fold("")(_.body)) ).render - val hasLongerFullComment = m.comment.fold(false) { c => c.short.length + 5 < c.body.length } @@ -53,7 +54,7 @@ trait MemberLayout { entity.modifiers.mkString(" ") + " " + m.kind ), span( - cls := "member-name", + cls := { if (m.addedImplicitly) "member-name implicitly-added" else "member-name" }, m.name ), spanWith("member-type-params no-left-margin", typeParams(m)), @@ -68,6 +69,13 @@ trait MemberLayout { } } + def fromImplicitSpan(m: Entity) = m.foldImplicitlyAdded { ref => + span( + "Implicitly added from: ", + referenceToLinks(ref) + ) + }.getOrElse(span()) + def spanWith(clazz: String, contents: String) = contents match { case "" => None case _ => Some(span(cls := clazz, contents)) diff --git a/dottydoc/js/src/model/entities.scala b/dottydoc/js/src/model/entities.scala index 4ae76c58c..49d0ec005 100644 --- a/dottydoc/js/src/model/entities.scala +++ b/dottydoc/js/src/model/entities.scala @@ -82,13 +82,23 @@ trait ParamList extends sjs.Object { trait Def extends Entity with Modifiers with ReturnValue { val typeParams: sjs.Array[String] val paramLists: sjs.Array[ParamList] + val implicitlyAddedFrom: sjs.UndefOr[Reference] } @ScalaJSDefined -trait Val extends Entity with Modifiers +trait Val extends Entity with Modifiers { + val implicitlyAddedFrom: sjs.UndefOr[Reference] +} + +@ScalaJSDefined +trait Var extends Entity with Modifiers { + val implicitlyAddedFrom: sjs.UndefOr[Reference] +} @ScalaJSDefined -trait Var extends Entity with Modifiers +trait ImplicitlyAddedEntity extends Entity { + val implicitlyAddedFrom: sjs.UndefOr[Reference] +} object ops { val EntitiesWithModifiers = @@ -140,5 +150,13 @@ object ops { def isPrivate: Boolean = hasModifiers && ent.asInstanceOf[Modifiers].modifiers.contains("private") + + def addedImplicitly: Boolean = (ent.kind == "def" || ent.kind == "val") && { + ent.asInstanceOf[ImplicitlyAddedEntity].implicitlyAddedFrom.isDefined + } + + def foldImplicitlyAdded[B](f: Reference => B): sjs.UndefOr[B] = + if (ent.kind == "def" || ent.kind == "val") ent.asInstanceOf[ImplicitlyAddedEntity].implicitlyAddedFrom.map(f) + else sjs.undefined } } |