Skip to content

[scaladays] dottydoc improvements 2 #2503

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions doc-tool/resources/_includes/sidebar.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,25 @@
{% endfor %}
</ul>

<script>
function clickToc(elem, currentPage) {
var sibling = elem.parentElement.children[1];
if (sibling.style.display === "" || sibling.style.display === "none")
sibling.style.display = "block";
else
sibling.style.display = "";
}

(function() {
var activeEntry = document.querySelector("#active-toc-entry")

while (activeEntry != null && activeEntry.tagName.toLowerCase() === "ul") {
activeEntry.style.display = "block";
activeEntry = activeEntry.parentElement.parentElement;
}
})();
</script>

<ul class="index-entities">
{% if docs.size > 0 %}
<li class="index-title">
Expand Down
27 changes: 13 additions & 14 deletions doc-tool/resources/_layouts/api-page.html
Original file line number Diff line number Diff line change
Expand Up @@ -175,22 +175,21 @@ <h1 class="section {% if entity.hasVisibleMembers == false %}empty{% endif %}">
{{ member.comment.body }}
</div>
</div>
<script>

function toggleMembersBody(span, arg){
var members = document.getElementById("entity-" + arg);
members.classList.toggle("toggled");
span.innerHTML = (span.innerHTML == "[-]") ? "[+]" : "[-]";
}

function toggleMemberBody(span, sig) {
var longBody = document.getElementById("long-body-" + sig);
longBody.classList.toggle("toggled")
span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]";
}
</script>
</div><!-- end member -->
{% endfor %}
<script>
function toggleMembersBody(span, arg){
var members = document.getElementById("entity-" + arg);
members.classList.toggle("toggled");
span.innerHTML = (span.innerHTML == "[-]") ? "[+]" : "[-]";
}

function toggleMemberBody(span, sig) {
var longBody = document.getElementById("long-body-" + sig);
longBody.classList.toggle("toggled")
span.innerHTML = (span.innerHTML == "[+]") ? "[-]" : "[+]";
}
</script>
</div>
</div><!-- end entity-container -->
</div>
Expand Down
95 changes: 62 additions & 33 deletions doc-tool/resources/_layouts/search.html
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ <h1>Member Results</h1>
// Parse parameters from URL:
var parameters = [];
var apiSearch = undefined;
var docs = {{ docs | json }};
var docs = {{ searchableDocs | json }};
(function() {
var pairs = location.search.substring(1).split('&');
for (var i = 0; i < pairs.length; i++) {
Expand Down Expand Up @@ -61,7 +61,7 @@ <h1>Member Results</h1>
"docs": docs,
});

var insertEntity = function(entityResultsNode, entityResults) {
var insertEntity = function(entityResultsNode, entityResults, suffix) {
return function(entity, parent) {
var shouldInsert =
parent.kind == "package" &&
Expand Down Expand Up @@ -92,41 +92,71 @@ <h1>Member Results</h1>
// Insert into list of results in package, no need to sort -
// already sorted:
var entityUl = entityResults[parent.name];
var entityLi = document.createElement("li");
if (entity.hasCompanion)
entityLi.classList.add("entity-result-li", "with-companion");
else
entityLi.classList.add("entity-result-li");

var companion = !entity.hasCompanion ? "" : (
'<a class="letter-anchor object" href="{{ site.baseurl }}/api/' + entity.companionPath.join('/') + '.html">O</a>'
);

var letter =
'<a class="letter-anchor ' + entity.kind + '" href="{{ site.baseurl }}/api/' + entity.path.join('/') + '.html">' +
entity.kind.charAt(0).toUpperCase() +
'</a>'

entityLi.innerHTML = (
'<div class="entity-kinds">' +
companion +
letter +
'</div>' +
"<a class=\"entity-name\" href=\"{{ site.baseurl }}/api/" + entity.path.join('/') + ".html\">" +
entity.name +
"</a>"
);
entityUl.appendChild(entityLi);
var selector = entity.path.slice(0, entity.path.length - 1).join('-') + '-' + entity.name + '-' + suffix;
var entityLi = document.querySelector('#' + selector);
if (!entityLi) {
entityLi = document.createElement("li");
if (entity.hasCompanion)
entityLi.classList.add("entity-result-li", "with-companion");
else
entityLi.classList.add("entity-result-li");

entityLi.id = selector;

var companion = !entity.hasCompanion ? "" : (
'<a class="letter-anchor object" href="{{ site.baseurl }}/api/' + entity.companionPath.join('/') + '.html">O</a>'
);

var letter =
'<a class="letter-anchor ' + entity.kind + '" href="{{ site.baseurl }}/api/' + entity.path.join('/') + '.html">' +
entity.kind.charAt(0).toUpperCase() +
'</a>'

entityLi.innerHTML = (
'<div class="entity-kinds">' +
companion +
letter +
'</div>' +
"<a class=\"entity-name\" href=\"{{ site.baseurl }}/api/" + entity.path.join('/') + ".html\">" +
entity.name +
"</a>"
);
entityUl.appendChild(entityLi);
}
return entityLi;
}
else {
return undefined;
var path = entity.path.slice(0, entity.path.length - 1)
return document.querySelector('#' + path + '-' + entity.name + '-' + suffix);
}
};
};

var insertMember = function(member, li) {
li.appendChild(document.createTextNode(", " + member.name));
var div = document.createElement("div");
div.classList.add("member-result");

var renderParamList = function(plist) {
var start = plist.isImplicit ? "(implicit " : "(";
var args = plist.list.join(', ');
return start + args + ")";
};

var concatenateStrings = function(acc, str) { return acc + str; };

var paramLists = !member.paramLists ? "" : (
member.paramLists
.map(renderParamList)
.reduce(concatenateStrings, "")
);

div.innerHTML =
'<div class="member-kind">'+ member.kind +'</div>' +
'<div class="member-name">'+ member.name +'</div>' +
'<div class="member-param-lists">' + paramLists + ':</div>' +
'<div class="member-return">'+ member.returnValue +'</div>'

li.appendChild(div);
};

var entityResultsNode = document.getElementById("entity-results");
Expand All @@ -135,20 +165,19 @@ <h1>Member Results</h1>
var memberResults = [];

apiSearch.onmessage = function(res) {
var package = res.data.package;
switch(res.data.type) {
case "entityResult": {
var entity = res.data.entity;
var package = res.data.package;
//console.log("got entity: " + entity.name + ", in package: " + package.name);
insertEntity(entityResultsNode, entityResults)(entity, package);
insertEntity(entityResultsNode, entityResults, "entity")(entity, package);
break;
}
case "memberResult": {
var member = res.data.member;
var parent = res.data.parent;
var package = res.data.package;
//console.log("got member: " + member.name + ", in entity: " + parent.name);
var li = insertEntity(memberResultsNode, memberResults)(parent, package);
var li = insertEntity(memberResultsNode, memberResults, "member")(parent, package);
if (li) insertMember(member, li);
break;
}
Expand Down
43 changes: 34 additions & 9 deletions doc-tool/resources/css/search.css
Original file line number Diff line number Diff line change
Expand Up @@ -47,15 +47,7 @@ div#result-container > div.results {
float: left;
width: 50%;
padding-right: 20px;
min-height: 40px; /** debug */
}

div#entity-results {
background-color: green; /** debug */
}

div#member-results {
background-color: red; /** debug */
overflow: hidden;
}

div.results > h1 {
Expand Down Expand Up @@ -134,6 +126,39 @@ div.results li.entity-result-li:hover {
margin-left: 0;
}

div.results li.entity-result-li > div.member-result {
padding-top: 3px;
display: block;
width: 100%;
min-height: 30px;
transition: all 0.2s ease;
margin-left: 105px;
}

div.results li.entity-result-li:hover > div.member-result {
margin-left: 23px;
}

div.results li.entity-result-li > div.member-result > div.member-kind {
margin-right: 5px;
font-weight: 400;
}

div.results li.entity-result-li > div.member-result > div.member-return {
margin-left: 5px;
font-weight: 400;
white-space: nowrap;
}

div.results li.entity-result-li > div.member-result > div.member-kind,
div.results li.entity-result-li > div.member-result > div.member-name,
div.results li.entity-result-li > div.member-result > div.member-param-lists,
div.results li.entity-result-li > div.member-result > div.member-return {
float: left;
line-height: 16px;
display: inline;
}

div.results li.entity-result-li > div.entity-kinds {
float: left;
}
Expand Down
20 changes: 13 additions & 7 deletions doc-tool/resources/css/sidebar.css
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,15 @@ ul.toc {
padding-left: 0;
}

ul.toc ul {
padding-left: 0;
}

ul.toc > li,
ul.toc ul > li {
padding-left: 24px;
}

ul.toc > li:hover {
background-color: transparent;
}
Expand Down Expand Up @@ -72,10 +81,11 @@ ul.toc > li.logo-li > a {
float: none;
}

ul.toc > li > a {
ul.toc > li > a,
ul.toc li > a.toggle-children {
font-size: 13px;
display: block;
padding: 0 0 0 24px;
padding: 0;
width: 100%;
color: rgba(0, 0, 0, 0.87);
background: transparent;
Expand All @@ -84,13 +94,9 @@ ul.toc > li > a {
text-transform: uppercase;
}

ul.toc > li > ul.show {
display: block;
ul.toc > li ul {
list-style-type: none;
font-size: 13px;
}

ul.toc > li > ul.hide {
display: none;
}

Expand Down
12 changes: 10 additions & 2 deletions doc-tool/resources/js/api-search.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,15 @@ onmessage = function(e) {
var searchRegex = regexForTerm(searchTerm);

var filterPackages = function(entity) {
return entity.kind != "package";
switch(entity.kind) {
case "val":
case "def":
case "type":
case "package":
return false;
default:
return true;
}
};

// look at this higher order function, such syntax:
Expand Down Expand Up @@ -78,7 +86,7 @@ onmessage = function(e) {
};

docs.forEach(function(pack) {
pack.children
pack.members
.filter(filterPackages)
.forEach(messageParentIfMatches(pack));
});
Expand Down
1 change: 1 addition & 0 deletions doc-tool/src/dotty/tools/dottydoc/DocCompiler.scala
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ class DocCompiler extends Compiler {
new LinkCompanions,
new AlternateConstructors,
new SortMembers)),
List(DocMiniTransformations(new RemoveEmptyPackages)),
List(new StatisticsPhase)
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package dotty.tools
package dottydoc
package core

import dotc.core.Contexts.Context

import transform.DocMiniPhase
import model._

class RemoveEmptyPackages extends DocMiniPhase {
override def transformPackage(implicit ctx: Context) = { case p: Package =>
if (p.members.exists(_.kind != "package")) p
else NonEntity
}
}
5 changes: 5 additions & 0 deletions doc-tool/src/dotty/tools/dottydoc/core/transform.scala
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,11 @@ object transform {
pack <- rootPackages(ctx.docbase.packages)
transformed = performPackageTransform(pack)
} yield ctx.docbase.packagesMutable(pack.name) = transformed

ctx.docbase.packagesMutable.foreach { case (key, value) =>
if (value eq NonEntity) ctx.docbase.packagesMutable -= key
}

units
}

Expand Down
Loading