diff options
Diffstat (limited to 'dottydoc/js')
-rw-r--r-- | dottydoc/js/src/html/Member.scala | 50 | ||||
-rw-r--r-- | dottydoc/js/src/model/references.scala | 12 |
2 files changed, 60 insertions, 2 deletions
diff --git a/dottydoc/js/src/html/Member.scala b/dottydoc/js/src/html/Member.scala index 271885753..1d84e7831 100644 --- a/dottydoc/js/src/html/Member.scala +++ b/dottydoc/js/src/html/Member.scala @@ -119,7 +119,7 @@ trait MemberLayout { "[", tref .paramLinks - .map(linkToAnchor) + .map(referenceToLinks) .flatMap(link => Seq(link, span(cls := "type-separator no-left-margin", ",").render)) .toList.dropRight(1), "]" @@ -141,6 +141,30 @@ trait MemberLayout { span(cls := "type-separator", "&"), referenceToLinks(right) ).render + + case "BoundsReference" => + val (low, high) = (ref.asInstanceOf[BoundsReference].low, ref.asInstanceOf[BoundsReference].high) + span( + referenceToLinks(low), + span(cls := "type-separator", "<:"), + referenceToLinks(high) + ).render + + case "FunctionReference" => { + val func = ref.asInstanceOf[FunctionReference] + span( + cls := "no-left-margin", + if (func.args.length > 1) "(" else "", + if (func.args.isEmpty) + span("()") + else func + .args + .map(referenceToLinks) + .flatMap(link => Seq(link, span(cls := "type-separator no-left-margin", ",").render)).init.toList, + if (func.args.length > 1) ") => " else " => ", + referenceToLinks(func.returnValue) + ).render + } } } @@ -183,7 +207,7 @@ trait MemberLayout { returnValue, "[", trv.paramLinks - .map(decodeTpeLink) + .map(link) .flatMap { sp => Seq(sp, span(cls := "type-separator no-left-margin", ",").render) } @@ -208,6 +232,28 @@ trait MemberLayout { span(cls := "type-separator", "&"), link(right) ).render + + case "BoundsReference" => + val (low, high) = (rv.asInstanceOf[BoundsReference].low, rv.asInstanceOf[BoundsReference].high) + span( + link(low), + span(cls := "type-separator", "<:"), + link(high) + ).render + case "FunctionReference" => + val func = rv.asInstanceOf[FunctionReference] + span( + cls := "no-left-margin", + if (func.args.length > 1) "(" else "", + if (func.args.isEmpty) + span("()") + else func + .args + .map(link) + .flatMap(link => Seq(link, span(cls := "type-separator no-left-margin", ",").render)).init.toList, + if (func.args.length > 1) ") => " else " => ", + link(func.returnValue) + ).render } } diff --git a/dottydoc/js/src/model/references.scala b/dottydoc/js/src/model/references.scala index b0e8a8674..7cd396e94 100644 --- a/dottydoc/js/src/model/references.scala +++ b/dottydoc/js/src/model/references.scala @@ -32,6 +32,12 @@ trait AndTypeReference extends Reference { } @ScalaJSDefined +trait BoundsReference extends Reference { + val low: Reference + val high: Reference +} + +@ScalaJSDefined trait NamedReference extends Reference { val title: String val ref: Reference @@ -43,6 +49,12 @@ trait ConstantReference extends Reference { val title: String } +@ScalaJSDefined +trait FunctionReference extends Reference { + val args: sjs.Array[Reference] + val returnValue: Reference +} + /** Materializable links */ @ScalaJSDefined sealed trait MaterializableLink extends sjs.Object { |