aboutsummaryrefslogtreecommitdiff
path: root/doc-tool
diff options
context:
space:
mode:
authorFelix Mulder <felix.mulder@gmail.com>2017-01-13 17:55:30 +0100
committerFelix Mulder <felix.mulder@gmail.com>2017-01-31 14:31:08 +0100
commit248f469ddcf57067d02e8b1bea41237766a75cfb (patch)
tree44d2d1aa995376977fb63d42dd471a4a9b4fee26 /doc-tool
parent3313ce1985a9ddbad37c28baeef838266d8ed47a (diff)
downloaddotty-248f469ddcf57067d02e8b1bea41237766a75cfb.tar.gz
dotty-248f469ddcf57067d02e8b1bea41237766a75cfb.tar.bz2
dotty-248f469ddcf57067d02e8b1bea41237766a75cfb.zip
Add proper materialization of references
Diffstat (limited to 'doc-tool')
-rw-r--r--doc-tool/resources/_includes/link.html6
-rw-r--r--doc-tool/resources/_includes/reference.html77
-rw-r--r--doc-tool/resources/_layouts/api-page.html9
-rw-r--r--doc-tool/resources/css/api-page.css4
-rw-r--r--doc-tool/src/dotty/tools/dottydoc/model/java.scala2
-rw-r--r--doc-tool/src/dotty/tools/dottydoc/staticsite/LiquidTemplate.scala8
-rw-r--r--doc-tool/src/dotty/tools/dottydoc/staticsite/Site.scala4
7 files changed, 98 insertions, 12 deletions
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 %}
+ <a href="{{ tpeLink.target }}">{{ tpeLink.title }}</a>
+{% 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 %}
+ <span class="no-left no-right">[</span>
+ {% for reference in reference.paramLinks %}
+ {% include 'reference' %}
+ {% if forloop.last != true %}
+ <span class="no-left">, </span>
+ {% endif %}
+ {% endfor %}
+ <span class="no-left">]</span>
+ {% endif %}
+
+{% when 'FunctionReference' %}
+
+ {% assign originalLink = reference %}
+ {% case reference.args.size %}
+ {% when 0 %}
+ <span>()</span>
+ {% when 1 %}
+ {% for reference in reference.args %}
+ {% include 'reference' %}
+ {% endfor %}
+ {% else %}
+ {% for reference in reference.args %}
+ {% if forloop.first %}
+ <span class="no-right">(</span>
+ {% endif %}
+ {% include 'reference' %}
+ {% if forloop.last != true %}
+ <span class="no-left">,</span>
+ {% else %}
+ <span class="no-left">)</span>
+ {% endif %}
+ {% endfor %}
+ {% endcase %}
+ <span>=&gt;</span>
+ {% assign reference = originalLink.returnValue %}
+ {% include 'reference' %}
+
+{% when 'TupleReference' %}
+
+ {% for reference in reference.args %}
+ {% if forloop.first %}<span class="no-right">(</span>{% endif %}
+ {% include 'reference' %}
+ {% if forloop.last %}
+ <span class="no-left">)</span>
+ {% else %}
+ <span class="no-left">,</span>
+ {% endif %}
+ {% endfor %}
+
+{% when 'BoundsReference' %}
+
+ {% assign oldRef = reference %}
+ {% assign reference = oldRef.low %}
+ {% include 'reference' %}
+ <span>&lt;:</span>
+ {% assign reference = oldRef.hi %}
+ {% include 'reference' %}
+
+{% when 'ConstantReference' %}
+ {{ reference.title }}
+
+{% else %}
+
+ {% assign original= reference %}
+ {% assign reference = original.left %}
+ {% include 'reference' %}
+ <span>{% if original.kind == "OrTypeReference" %}|{% else %}&amp;{% endif %}</span>
+ {% 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:
<span class="no-left keyword">implicit</span>
{% endif %}
{% for ref in plist.list %}
- {% if forloop.last %}
- <span class="no-left">{{ ref.title }}</span>
- {% else %}
- <span class="no-left">{{ ref.title }}, </span>
+ <span class="{% if forloop.first %}no-left{% endif %}">{{ ref.title }}:{% if ref.isByName %} =&gt;{% endif %}</span>
+ {% assign reference = ref.ref %}
+ {% include "reference" %}
+ {% if forloop.last != true %}
+ <span class="no-left">, </span>
{% endif %}
{% endfor %}
<span class="no-left">)</span>
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)