From 248f469ddcf57067d02e8b1bea41237766a75cfb Mon Sep 17 00:00:00 2001 From: Felix Mulder Date: Fri, 13 Jan 2017 17:55:30 +0100 Subject: Add proper materialization of references --- doc-tool/resources/_includes/link.html | 6 ++ doc-tool/resources/_includes/reference.html | 77 ++++++++++++++++++++++ doc-tool/resources/_layouts/api-page.html | 9 +-- doc-tool/resources/css/api-page.css | 4 ++ doc-tool/src/dotty/tools/dottydoc/model/java.scala | 2 +- .../tools/dottydoc/staticsite/LiquidTemplate.scala | 8 +-- .../src/dotty/tools/dottydoc/staticsite/Site.scala | 4 +- 7 files changed, 98 insertions(+), 12 deletions(-) create mode 100644 doc-tool/resources/_includes/link.html create mode 100644 doc-tool/resources/_includes/reference.html (limited to 'doc-tool') diff --git a/doc-tool/resources/_includes/link.html b/doc-tool/resources/_includes/link.html new file mode 100644 index 000000000..621894eaf --- /dev/null +++ b/doc-tool/resources/_includes/link.html @@ -0,0 +1,6 @@ +{% case tpeLink.kind %} +{% when 'NoLink' %} + {{ tpeLink.title }} +{% else %} + {{ tpeLink.title }} +{% endcase %} diff --git a/doc-tool/resources/_includes/reference.html b/doc-tool/resources/_includes/reference.html new file mode 100644 index 000000000..eb741c02c --- /dev/null +++ b/doc-tool/resources/_includes/reference.html @@ -0,0 +1,77 @@ +{% case reference.kind %} +{% when 'TypeReference' %} + + {% assign tpeLink = reference.tpeLink %} + {% include 'link' %} + {% if reference.paramLinks.size > 0 %} + [ + {% for reference in reference.paramLinks %} + {% include 'reference' %} + {% if forloop.last != true %} + , + {% endif %} + {% endfor %} + ] + {% endif %} + +{% when 'FunctionReference' %} + + {% assign originalLink = reference %} + {% case reference.args.size %} + {% when 0 %} + () + {% when 1 %} + {% for reference in reference.args %} + {% include 'reference' %} + {% endfor %} + {% else %} + {% for reference in reference.args %} + {% if forloop.first %} + ( + {% endif %} + {% include 'reference' %} + {% if forloop.last != true %} + , + {% else %} + ) + {% endif %} + {% endfor %} + {% endcase %} + => + {% assign reference = originalLink.returnValue %} + {% include 'reference' %} + +{% when 'TupleReference' %} + + {% for reference in reference.args %} + {% if forloop.first %}({% endif %} + {% include 'reference' %} + {% if forloop.last %} + ) + {% else %} + , + {% endif %} + {% endfor %} + +{% when 'BoundsReference' %} + + {% assign oldRef = reference %} + {% assign reference = oldRef.low %} + {% include 'reference' %} + <: + {% assign reference = oldRef.hi %} + {% include 'reference' %} + +{% when 'ConstantReference' %} + {{ reference.title }} + +{% else %} + + {% assign original= reference %} + {% assign reference = original.left %} + {% include 'reference' %} + {% if original.kind == "OrTypeReference" %}|{% else %}&{% endif %} + {% assign reference = original.right %} + {% include 'reference' %} + +{% endcase %} diff --git a/doc-tool/resources/_layouts/api-page.html b/doc-tool/resources/_layouts/api-page.html index 1f5a441de..292c334dc 100644 --- a/doc-tool/resources/_layouts/api-page.html +++ b/doc-tool/resources/_layouts/api-page.html @@ -49,10 +49,11 @@ extraCSS: implicit {% endif %} {% for ref in plist.list %} - {% if forloop.last %} - {{ ref.title }} - {% else %} - {{ ref.title }}, + {{ ref.title }}:{% if ref.isByName %} =>{% endif %} + {% assign reference = ref.ref %} + {% include "reference" %} + {% if forloop.last != true %} + , {% endif %} {% endfor %} ) diff --git a/doc-tool/resources/css/api-page.css b/doc-tool/resources/css/api-page.css index e2927f0d4..743596813 100644 --- a/doc-tool/resources/css/api-page.css +++ b/doc-tool/resources/css/api-page.css @@ -63,3 +63,7 @@ div#entity-members > div.member > div.member-title span.keyword { div#entity-members > div.member > div.member-title span.no-left { margin-left: -11px; } + +div#entity-members > div.member > div.member-title span.no-right { + margin-right: -11px; +} diff --git a/doc-tool/src/dotty/tools/dottydoc/model/java.scala b/doc-tool/src/dotty/tools/dottydoc/model/java.scala index 6ec35875f..c20206ced 100644 --- a/doc-tool/src/dotty/tools/dottydoc/model/java.scala +++ b/doc-tool/src/dotty/tools/dottydoc/model/java.scala @@ -169,7 +169,7 @@ object java { case FunctionReference(args, returnValue) => Map( "kind" -> "FunctionReference", "args" -> args.map(_.asJava).asJava, - "returnValue" -> returnValue + "returnValue" -> returnValue.asJava ).asJava case TupleReference(args) => Map( diff --git a/doc-tool/src/dotty/tools/dottydoc/staticsite/LiquidTemplate.scala b/doc-tool/src/dotty/tools/dottydoc/staticsite/LiquidTemplate.scala index 6d1ee146a..99ee54b74 100644 --- a/doc-tool/src/dotty/tools/dottydoc/staticsite/LiquidTemplate.scala +++ b/doc-tool/src/dotty/tools/dottydoc/staticsite/LiquidTemplate.scala @@ -47,12 +47,8 @@ case class LiquidTemplate(contents: String) extends ResourceFinder { includes .get(incResource) .map { template => - val additionalParams = - // include has `with` clause: - if (nodes.length > 1) params + (origInclude -> nodes(1).render(ctx)) - else params - - LiquidTemplate(template).render(additionalParams, includes) + if (nodes.length > 1) ctx.put(origInclude, nodes(1).render(ctx)) + LiquidTemplate(template).render(Map.empty ++ ctx.getVariables.asScala, includes) } .getOrElse { /*dottydoc.*/println(s"couldn't find include file '$origInclude'") diff --git a/doc-tool/src/dotty/tools/dottydoc/staticsite/Site.scala b/doc-tool/src/dotty/tools/dottydoc/staticsite/Site.scala index 946de97c3..03e78024c 100644 --- a/doc-tool/src/dotty/tools/dottydoc/staticsite/Site.scala +++ b/doc-tool/src/dotty/tools/dottydoc/staticsite/Site.scala @@ -311,7 +311,9 @@ case class Site(val root: JFile, val documentation: Map[String, Package]) extend val defaultIncludes: Map[String, String] = Map( "header.html" -> "/_includes/header.html", "scala-logo.html" -> "/_includes/scala-logo.html", - "toc.html" -> "/_includes/toc.html" + "toc.html" -> "/_includes/toc.html", + "reference.html" -> "/_includes/reference.html", + "link.html" -> "/_includes/link.html" ).mapValues(getResource) -- cgit v1.2.3