Skip to content

Commit d97d35d

Browse files
authored
Merge pull request #2487 from dotty-staging/topic/dottydoc-scaladays-2k17-1
[scaladays] dottydoc fixes 2
2 parents 8ed5db5 + 6b0df07 commit d97d35d

File tree

20 files changed

+588
-24
lines changed

20 files changed

+588
-24
lines changed

compiler/src/dotty/tools/dotc/config/ScalaSettings.scala

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,5 +130,12 @@ class ScalaSettings extends Settings.SettingGroup {
130130
""
131131
)
132132

133+
val projectUrl = StringSetting (
134+
"-project-url",
135+
"project repository homepage",
136+
"The source repository of your project",
137+
""
138+
)
139+
133140
val wikiSyntax = BooleanSetting("-Xwiki-syntax", "Retains the Scala2 behavior of using Wiki Syntax in Scaladoc")
134141
}

doc-tool/resources/_includes/sidebar.html

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,20 @@
1111
<li class="index-title">
1212
<span>API</span>
1313
</li>
14+
<li>
15+
<input id="search-api-input" type="text" placeholder="Search API"/>
16+
<script>
17+
var input = document.getElementById("search-api-input");
18+
input.onkeydown = function(evt) {
19+
evt = evt || window.event;
20+
if (evt.keyCode == 13) window.location = (
21+
"{{ site.baseurl }}/api/search.html?" +
22+
"searchTerm=" + input.value +
23+
"&previousUrl=" + encodeURI(window.location)
24+
);
25+
};
26+
</script>
27+
</li>
1428
{% endif %}
1529
{% for pkg in docs %}
1630
<li class="index-entity entity-package">
@@ -20,7 +34,16 @@ <h1><a class="entity-name" href="{{ site.baseurl }}/api/{{ pkg.path | join: "/"
2034
{% for member in pkg.children %}
2135
{% if member.kind == "object" and member.hasCompanion %}
2236
{% elsif member.kind != "package" %}
37+
38+
{% if forloop.index == 6 and forloop.length > 7 %}
39+
<li id="show-hidden-by-default" onclick="toggleHiddenByDefault(this);">+ expand rest</li>
40+
<li class="hidden-by-default {% if member.hasCompanion %} with-companion {% endif %}">
41+
{% elsif forloop.index > 6 and forloop.length > 7 %}
42+
<li class="hidden-by-default {% if member.hasCompanion %} with-companion {% endif %}">
43+
{% else %}
2344
<li class="{% if member.hasCompanion %} with-companion {% endif %}">
45+
{% endif %}<!-- end li setter -->
46+
2447
<div class="entity-kinds">
2548
{% if member.hasCompanion %}
2649
<a class="letter-anchor object" href="{{ site.baseurl }}/api/{{ member.companionPath | join: "/" }}.html">O</a>
@@ -29,10 +52,28 @@ <h1><a class="entity-name" href="{{ site.baseurl }}/api/{{ pkg.path | join: "/"
2952
</div>
3053
<a class="entity-name" href="{{ site.baseurl }}/api/{{ member.path | join: "/" }}.html">{{ member.name }}</a>
3154
</li>
55+
56+
{% if forloop.last and forloop.index > 6 %}
57+
<li id="hide-hidden-by-default" onclick="toggleHiddenByDefault(this);">- collapse members</li>
3258
{% endif %}
59+
60+
{% endif %} <!-- end != "package" -->
61+
3362
{% endfor %}
3463
</ul>
3564
</li>
3665
{% endfor %}
3766
</ul>
3867
</div>
68+
<script>
69+
function toggleHiddenByDefault(li) {
70+
var ul = li.parentElement;
71+
72+
for (var i = 0; i < ul.children.length; i++) {
73+
var childLi = ul.children[i];
74+
if (childLi.classList.contains('hidden-by-default') || childLi.id == "hide-hidden-by-default" || childLi.id == "show-hidden-by-default") {
75+
childLi.classList.toggle('toggled');
76+
}
77+
}
78+
}
79+
</script>

doc-tool/resources/_includes/toolbar.html

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,15 @@
66
<h1 id="project-name">{{ site.project }} Documentation</h1>
77
<h2 id="project-version">{{ site.version }}</h2>
88
</div>
9+
10+
{% if site.projectUrl %}
11+
<a title="Project repository" id="github-link" href="{{ site.projectUrl }}">
12+
{% if site.projectUrl contains "github" %}
13+
<i class="fa fa-github" aria-hidden="true"></i>
14+
{% else %}
15+
<i class="fa fa-code" aria-hidden="true"></i>
16+
{% endif %}
17+
</a>
18+
{% endif %}
919
</div>
20+
<div id="toolbar-spacing"></div>

doc-tool/resources/_layouts/main.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
<link
2121
rel="stylesheet"
22-
href="{{ site.baseurl }}/css/font-awesome.min.css"
22+
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"
2323
>
2424

2525
<link

doc-tool/resources/_layouts/rand.sh

Lines changed: 0 additions & 4 deletions
This file was deleted.
Lines changed: 161 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,161 @@
1+
---
2+
layout: main
3+
extraCSS:
4+
- css/toolbar.css
5+
- css/search.css
6+
---
7+
8+
{% include "toolbar" %}
9+
10+
<div id="back-container">
11+
<span>
12+
<a id="back-anchor" href="">Back</a>
13+
</span>
14+
</div>
15+
16+
<div id="search-container">
17+
<h1 id="searching-for"></h1>
18+
<div id="result-container">
19+
<div class="results">
20+
<h1>Entity Results</h1>
21+
<ul id="entity-results">
22+
</ul>
23+
</div>
24+
<div class="results">
25+
<h1>Member Results</h1>
26+
<ul id="member-results">
27+
</ul>
28+
</div>
29+
</div>
30+
</div>
31+
32+
<script>
33+
// Parse parameters from URL:
34+
var parameters = [];
35+
var apiSearch = undefined;
36+
var docs = {{ docs | json }};
37+
(function() {
38+
var pairs = location.search.substring(1).split('&');
39+
for (var i = 0; i < pairs.length; i++) {
40+
var keyVal = pairs[i].split('=');
41+
parameters[keyVal[0]] = keyVal.length == 2 ? keyVal[1] : undefined;
42+
}
43+
})();
44+
45+
// Set search term and back button:
46+
var searchTerm = parameters["searchTerm"];
47+
document.getElementById("searching-for").innerHTML = 'Search results for "' + searchTerm + '"';
48+
document.getElementById("back-anchor").href = parameters["previousUrl"];
49+
50+
if (!window.Worker) {
51+
document.getElementById("searching-for").innerHTML =
52+
"Couldn't search for \"" + searchTerm + "\", " +
53+
"web workers not supported. Please update your browser.";
54+
}
55+
else {
56+
// perform API search:
57+
apiSearch = new Worker("{{ site.baseurl }}/js/api-search.js");
58+
apiSearch.postMessage({
59+
"type": "setup",
60+
"search": searchTerm,
61+
"docs": docs,
62+
});
63+
64+
var insertEntity = function(entityResultsNode, entityResults) {
65+
return function(entity, parent) {
66+
var shouldInsert =
67+
parent.kind == "package" &&
68+
!(entity.kind == "object" && entity.hasCompanion)
69+
70+
if (shouldInsert) {
71+
// If parent package not in list, create it first:
72+
if (!(parent.name in entityResults)) {
73+
var packageLi = document.createElement("li");
74+
entityResultsNode.appendChild(packageLi);
75+
76+
packageLi.innerHTML =
77+
"<h1 class=\"package-name\">" +
78+
"<a href=\"{{ site.baseurl }}/api/" + parent.path.join('/') + "/index.html\">" +
79+
parent.name +
80+
"</a>" +
81+
"</h1>";
82+
83+
var entityUl = document.createElement("ul");
84+
entityUl.classList.add("entity-ul");
85+
packageLi.appendChild(entityUl);
86+
entityResults[parent.name] = entityUl;
87+
var coverBlock = document.createElement("div");
88+
coverBlock.classList.add("cover-block");
89+
entityUl.appendChild(coverBlock);
90+
}
91+
92+
// Insert into list of results in package, no need to sort -
93+
// already sorted:
94+
var entityUl = entityResults[parent.name];
95+
var entityLi = document.createElement("li");
96+
if (entity.hasCompanion)
97+
entityLi.classList.add("entity-result-li", "with-companion");
98+
else
99+
entityLi.classList.add("entity-result-li");
100+
101+
var companion = !entity.hasCompanion ? "" : (
102+
'<a class="letter-anchor object" href="{{ site.baseurl }}/api/' + entity.companionPath.join('/') + '.html">O</a>'
103+
);
104+
105+
var letter =
106+
'<a class="letter-anchor ' + entity.kind + '" href="{{ site.baseurl }}/api/' + entity.path.join('/') + '.html">' +
107+
entity.kind.charAt(0).toUpperCase() +
108+
'</a>'
109+
110+
entityLi.innerHTML = (
111+
'<div class="entity-kinds">' +
112+
companion +
113+
letter +
114+
'</div>' +
115+
"<a class=\"entity-name\" href=\"{{ site.baseurl }}/api/" + entity.path.join('/') + ".html\">" +
116+
entity.name +
117+
"</a>"
118+
);
119+
entityUl.appendChild(entityLi);
120+
return entityLi;
121+
}
122+
else {
123+
return undefined;
124+
}
125+
};
126+
};
127+
128+
var insertMember = function(member, li) {
129+
li.appendChild(document.createTextNode(", " + member.name));
130+
};
131+
132+
var entityResultsNode = document.getElementById("entity-results");
133+
var entityResults = [];
134+
var memberResultsNode = document.getElementById("member-results");
135+
var memberResults = [];
136+
137+
apiSearch.onmessage = function(res) {
138+
switch(res.data.type) {
139+
case "entityResult": {
140+
var entity = res.data.entity;
141+
var package = res.data.package;
142+
//console.log("got entity: " + entity.name + ", in package: " + package.name);
143+
insertEntity(entityResultsNode, entityResults)(entity, package);
144+
break;
145+
}
146+
case "memberResult": {
147+
var member = res.data.member;
148+
var parent = res.data.parent;
149+
var package = res.data.package;
150+
//console.log("got member: " + member.name + ", in entity: " + parent.name);
151+
var li = insertEntity(memberResultsNode, memberResults)(parent, package);
152+
if (li) insertMember(member, li);
153+
break;
154+
}
155+
default: {
156+
console.log("Got unknown message: " + res.data.type);
157+
}
158+
}
159+
};
160+
}
161+
</script>

doc-tool/resources/css/api-page.css

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,9 @@ h1.section {
6969
h1.section > span.expand-button.visible {
7070
color: rgba(167, 161, 161, 0.5);
7171
font-family: "Source Code Pro", sans-serif;
72-
font-size: 25px;
72+
font-size: 16px;
73+
float: left;
74+
margin: 14px 9px 0 0;
7375
}
7476

7577
h1.section > span.expand-button.visible:hover {

doc-tool/resources/css/dottydoc.css

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ body {
1818
div#content-wrapper {
1919
min-height: 100vh;
2020
padding-left: 0;
21-
margin-top: 75px;
2221
}
2322

2423
div#content-wrapper div#content-body {

0 commit comments

Comments
 (0)