Make pragmas look clickable in docs (#8176)
* Visual cues for hidden pragmas in docs. * Add hover cue
This commit is contained in:
parent
692d1da95d
commit
f2b6efb7dc
2 changed files with 46 additions and 32 deletions
|
|
@ -16,7 +16,7 @@ import
|
||||||
wordrecg, syntaxes, renderer, lexer, packages/docutils/rstast,
|
wordrecg, syntaxes, renderer, lexer, packages/docutils/rstast,
|
||||||
packages/docutils/rst, packages/docutils/rstgen, times,
|
packages/docutils/rst, packages/docutils/rstgen, times,
|
||||||
packages/docutils/highlite, sempass2, json, xmltree, cgi,
|
packages/docutils/highlite, sempass2, json, xmltree, cgi,
|
||||||
typesrenderer, astalgo, modulepaths, lineinfos
|
typesrenderer, astalgo, modulepaths, lineinfos, sequtils
|
||||||
|
|
||||||
type
|
type
|
||||||
TSections = array[TSymKind, Rope]
|
TSections = array[TSymKind, Rope]
|
||||||
|
|
@ -259,11 +259,19 @@ proc nodeToHighlightedHtml(d: PDoc; n: PNode; result: var Rope; renderFlags: TRe
|
||||||
of tkSpaces, tkInvalid:
|
of tkSpaces, tkInvalid:
|
||||||
add(result, literal)
|
add(result, literal)
|
||||||
of tkCurlyDotLe:
|
of tkCurlyDotLe:
|
||||||
dispA(d.conf, result, """<span class="Other pragmabegin">$1</span><div class="pragma">""",
|
dispA(d.conf, result, "<span>" & # This span is required for the JS to work properly
|
||||||
|
"""<span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span>
|
||||||
|
</span>
|
||||||
|
<span class="pragmawrap">
|
||||||
|
<span class="Other">$1</span>
|
||||||
|
<span class="pragma">""".replace("\n", ""), # Must remove newlines because wrapped in a <pre>
|
||||||
"\\spanOther{$1}",
|
"\\spanOther{$1}",
|
||||||
[rope(esc(d.target, literal))])
|
[rope(esc(d.target, literal))])
|
||||||
of tkCurlyDotRi:
|
of tkCurlyDotRi:
|
||||||
dispA(d.conf, result, "</div><span class=\"Other pragmaend\">$1</span>",
|
dispA(d.conf, result, """
|
||||||
|
</span>
|
||||||
|
<span class="Other">$1</span>
|
||||||
|
</span>""".replace("\n", ""),
|
||||||
"\\spanOther{$1}",
|
"\\spanOther{$1}",
|
||||||
[rope(esc(d.target, literal))])
|
[rope(esc(d.target, literal))])
|
||||||
of tkParLe, tkParRi, tkBracketLe, tkBracketRi, tkCurlyLe, tkCurlyRi,
|
of tkParLe, tkParRi, tkBracketLe, tkBracketRi, tkCurlyLe, tkCurlyRi,
|
||||||
|
|
|
||||||
|
|
@ -1330,15 +1330,6 @@ dt pre > span.Operator ~ span.Identifier {
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-image: url("data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==");
|
background-image: url("data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA==");
|
||||||
margin-bottom: -5px; }
|
margin-bottom: -5px; }
|
||||||
div.pragma {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
span.pragmabegin {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
span.pragmaend {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.search_results {
|
div.search_results {
|
||||||
background-color: antiquewhite;
|
background-color: antiquewhite;
|
||||||
|
|
@ -1351,32 +1342,47 @@ div#global-links ul {
|
||||||
margin-left: 0;
|
margin-left: 0;
|
||||||
list-style-type: none;
|
list-style-type: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
span.pragmadots {
|
||||||
|
/* Position: relative frees us up to make the dots
|
||||||
|
look really nice without fucking up the layout and
|
||||||
|
causing bulging in the parent container */
|
||||||
|
position: relative;
|
||||||
|
/* 1px down looks slightly nicer */
|
||||||
|
top: 1px;
|
||||||
|
|
||||||
|
padding: 2px;
|
||||||
|
background-color: #D3D3D3;
|
||||||
|
border-radius: 4px;
|
||||||
|
margin: 0 2px;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
/* For some reason on Chrome, making the font size
|
||||||
|
smaller than 1em is causing the parent container to
|
||||||
|
bulge slightly. So, we're stuck with inheriting 1em,
|
||||||
|
which is sad, because 0.8em looks better... */
|
||||||
|
}
|
||||||
|
span.pragmadots:hover {
|
||||||
|
background-color: #DBDBDB;
|
||||||
|
}
|
||||||
|
span.pragmawrap {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script type="text/javascript" src="../dochack.js"></script>
|
<script type="text/javascript" src="../dochack.js"></script>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
function togglepragma(d) {
|
|
||||||
if (d.style.display != 'inline')
|
|
||||||
d.style.display = 'inline';
|
|
||||||
else
|
|
||||||
d.style.display = 'none';
|
|
||||||
}
|
|
||||||
|
|
||||||
function main() {
|
function main() {
|
||||||
var elements = document.getElementsByClassName("pragmabegin");
|
var pragmaDots = document.getElementsByClassName("pragmadots");
|
||||||
for (var i = 0; i < elements.length; ++i) {
|
for (var i = 0; i < pragmaDots.length; i++) {
|
||||||
var e = elements[i];
|
pragmaDots[i].onclick = function(event) {
|
||||||
e.onclick = function(event) {
|
// Hide tease
|
||||||
togglepragma(event.target.nextSibling);
|
event.target.parentNode.style.display = "none";
|
||||||
};
|
// Show actual
|
||||||
|
event.target.parentNode.nextElementSibling.style.display = "inline";
|
||||||
}
|
}
|
||||||
var elements = document.getElementsByClassName("pragmaend");
|
|
||||||
for (var i = 0; i < elements.length; ++i) {
|
|
||||||
var e = elements[i];
|
|
||||||
e.onclick = function(event) {
|
|
||||||
togglepragma(event.target.previousSibling);
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue