Skip to content

Commit cd281e7

Browse files
KacperFKorbanpikinier20
authored andcommitted
Hide irrelevant code snippet fragments in scaladoc
1 parent 349ecea commit cd281e7

File tree

5 files changed

+63
-32
lines changed

5 files changed

+63
-32
lines changed

scaladoc-js/resources/scaladoc-searchbar.css

+6-1
Original file line numberDiff line numberDiff line change
@@ -100,5 +100,10 @@
100100

101101
.pull-right {
102102
float: right;
103-
margin-left: auto
103+
margin-left: auto;
104+
}
105+
106+
.hide-snippet-comments-button {
107+
position: absolute;
108+
left: 90%;
104109
}

scaladoc-js/src/searchbar/code-snippets/CodeSnippets.scala

+25-5
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,34 @@ import org.scalajs.dom._
44
import org.scalajs.dom.ext._
55

66
class CodeSnippets:
7-
val replacePatternsAndResults = Seq(
8-
// ("", ""), // hide block directives
9-
("""(\/\/.*)(\n|\$)""", ""), // single line comment
10-
// ("", ""), // multi line comment
7+
val replacePatternsAndResults: Seq[(String, String)] = Seq(
8+
"""(\/\/{{\n)((.|\n)*?)(\/\/}}\n)""" -> """<span class="hideable">$2</span>""", // wrap content of block directives
9+
"""(\/\/.*?)(\n|\$)""" -> """<span class="hideable">$1</span>$2""", // wrap single line comment
10+
"""(\/\*)((.|\n)*?)(\*\/)""" -> """<span class="hideable">$0</span>""", // wrap multi line comment
1111
)
1212

1313
document.querySelectorAll("code").foreach {
1414
case e: html.Element => e.innerHTML = replacePatternsAndResults.foldLeft(e.innerHTML) {
15-
case (acc, (pattern, result)) => acc.replaceAll(pattern, """<span class="hideable;">$1</span>""")
15+
case (acc, (pattern, result)) =>
16+
acc.replaceAll(pattern, result)
1617
}
1718
}
19+
20+
def toggleHide(e: html.Element | html.Document) = e.querySelectorAll("code span.hideable").foreach {
21+
case e: html.Element if e.style.getPropertyValue("display").isEmpty => e.style.setProperty("display", "none")
22+
case e: html.Element => e.style.removeProperty("display")
23+
}
24+
25+
toggleHide(document)
26+
27+
document.querySelectorAll("pre").foreach {
28+
case e: html.Element =>
29+
val a = document.createElement("a")
30+
a.textContent = "Show"
31+
a.addEventListener("click", { (_: MouseEvent) =>
32+
a.textContent = if a.textContent == "Show" then "Hide" else "Show"
33+
toggleHide(e)
34+
})
35+
a.classList.add("hide-snippet-comments-button")
36+
e.insertBefore(a, e.firstChild)
37+
}

scaladoc-testcases/src/tests/methodsAndConstructors.scala

-22
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,5 @@
11
package tests.methodsAndConstructors
22

3-
4-
/**
5-
* This is my codeblock
6-
*
7-
* ```
8-
* //{{
9-
* import xd
10-
* import xd2
11-
* //}}
12-
*
13-
*
14-
* val x = 1 // This is my valid comment
15-
*
16-
* /*
17-
* Is this my comment?
18-
* */
19-
*
20-
* val y = 2
21-
* ```
22-
*
23-
* The end of my codeblock
24-
*/
253
class A
264
class B extends A
275
class C
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package tests.snippetComments
2+
3+
4+
/**
5+
* This is my codeblock
6+
*
7+
* ```
8+
* //{{
9+
* import xd
10+
* import xd2
11+
* //}}
12+
*
13+
*
14+
* val x = 1 // This is my valid comment
15+
*
16+
* /*
17+
* multi line comment
18+
* */
19+
*
20+
* val y = 2 // comment in the same line
21+
* // comment in new line
22+
* val z = 3
23+
*
24+
* //{{
25+
* val hideMe = 7
26+
* //}}
27+
* ```
28+
*
29+
* The end of my codeblock
30+
*/
31+
class A

scaladoc/src/dotty/tools/scaladoc/tasty/comments/MemberLookup.scala

+1-4
Original file line numberDiff line numberDiff line change
@@ -148,10 +148,7 @@ trait MemberLookup {
148148
}
149149

150150
if owner.isPackageDef then
151-
findMatch(hackMembersOf(owner).flatMap {
152-
s =>
153-
(if s.name.endsWith("package$") then hackMembersOf(s) else Iterator.empty) ++ Iterator(s)
154-
})
151+
findMatch(hackMembersOf(owner))
155152
else
156153
owner.tree match {
157154
case tree: TypeDef =>

0 commit comments

Comments
 (0)