diff options
author | flywind <xzsflywind@gmail.com> | 2022-04-09 23:50:57 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-09 17:50:57 +0200 |
commit | ded8b0e5410518ffed24b46565eb6e42f18a63f1 (patch) | |
tree | b58e13d7f60168d518a248cb08f1397ce8997478 | |
parent | 00775f6880733695d187d84bb742e8c9d6c65d6d (diff) | |
download | Nim-ded8b0e5410518ffed24b46565eb6e42f18a63f1.tar.gz |
rewrite docs JS in Nim (#19701)
* rewrite docs JS in Nim * fixup * fix nimdoc/rsttester
-rw-r--r-- | config/nimdoc.cfg | 43 | ||||
-rw-r--r-- | nimdoc/rst2html/expected/rst_examples.html | 43 | ||||
-rw-r--r-- | nimdoc/test_out_index_dot_html/expected/index.html | 43 | ||||
-rw-r--r-- | nimdoc/test_out_index_dot_html/expected/theindex.html | 43 | ||||
-rw-r--r-- | nimdoc/testproject/expected/subdir/subdir_b/utils.html | 43 | ||||
-rw-r--r-- | nimdoc/testproject/expected/testproject.html | 43 | ||||
-rw-r--r-- | nimdoc/testproject/expected/theindex.html | 43 | ||||
-rw-r--r-- | tools/dochack/dochack.nim | 36 |
8 files changed, 35 insertions, 302 deletions
diff --git a/config/nimdoc.cfg b/config/nimdoc.cfg index c1074f344..4efa1f637 100644 --- a/config/nimdoc.cfg +++ b/config/nimdoc.cfg @@ -243,49 +243,6 @@ doc.file = """<?xml version="1.0" encoding="utf-8" ?> <script type="text/javascript" src="$dochackjs"></script> -<script type="text/javascript"> -function main() { - var pragmaDots = document.getElementsByClassName("pragmadots"); - for (var i = 0; i < pragmaDots.length; i++) { - pragmaDots[i].onclick = function(event) { - // Hide tease - event.target.parentNode.style.display = "none"; - // Show actual - event.target.parentNode.nextElementSibling.style.display = "inline"; - } - } - - function switchTheme(e) { - if (e.target.checked) { - document.documentElement.setAttribute('data-theme', 'dark'); - localStorage.setItem('theme', 'dark'); - } else { - document.documentElement.setAttribute('data-theme', 'light'); - localStorage.setItem('theme', 'light'); - } - } - - const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); - if (toggleSwitch !== null) { - toggleSwitch.addEventListener('change', switchTheme, false); - } - - var currentTheme = localStorage.getItem('theme'); - if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { - currentTheme = 'dark'; - } - if (currentTheme) { - document.documentElement.setAttribute('data-theme', currentTheme); - - if (currentTheme === 'dark' && toggleSwitch !== null) { - toggleSwitch.checked = true; - } - } -} - -window.addEventListener('DOMContentLoaded', main); -</script> - </head> <body> <div class="document" id="documentId"> diff --git a/nimdoc/rst2html/expected/rst_examples.html b/nimdoc/rst2html/expected/rst_examples.html index 1df91ff1f..2b5218d9f 100644 --- a/nimdoc/rst2html/expected/rst_examples.html +++ b/nimdoc/rst2html/expected/rst_examples.html @@ -22,49 +22,6 @@ <script type="text/javascript" src="dochack.js"></script> -<script type="text/javascript"> -function main() { - var pragmaDots = document.getElementsByClassName("pragmadots"); - for (var i = 0; i < pragmaDots.length; i++) { - pragmaDots[i].onclick = function(event) { - // Hide tease - event.target.parentNode.style.display = "none"; - // Show actual - event.target.parentNode.nextElementSibling.style.display = "inline"; - } - } - - function switchTheme(e) { - if (e.target.checked) { - document.documentElement.setAttribute('data-theme', 'dark'); - localStorage.setItem('theme', 'dark'); - } else { - document.documentElement.setAttribute('data-theme', 'light'); - localStorage.setItem('theme', 'light'); - } - } - - const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); - if (toggleSwitch !== null) { - toggleSwitch.addEventListener('change', switchTheme, false); - } - - var currentTheme = localStorage.getItem('theme'); - if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { - currentTheme = 'dark'; - } - if (currentTheme) { - document.documentElement.setAttribute('data-theme', currentTheme); - - if (currentTheme === 'dark' && toggleSwitch !== null) { - toggleSwitch.checked = true; - } - } -} - -window.addEventListener('DOMContentLoaded', main); -</script> - </head> <body> <div class="document" id="documentId"> diff --git a/nimdoc/test_out_index_dot_html/expected/index.html b/nimdoc/test_out_index_dot_html/expected/index.html index 69dd2eb2e..c6a116bd6 100644 --- a/nimdoc/test_out_index_dot_html/expected/index.html +++ b/nimdoc/test_out_index_dot_html/expected/index.html @@ -22,49 +22,6 @@ <script type="text/javascript" src="dochack.js"></script> -<script type="text/javascript"> -function main() { - var pragmaDots = document.getElementsByClassName("pragmadots"); - for (var i = 0; i < pragmaDots.length; i++) { - pragmaDots[i].onclick = function(event) { - // Hide tease - event.target.parentNode.style.display = "none"; - // Show actual - event.target.parentNode.nextElementSibling.style.display = "inline"; - } - } - - function switchTheme(e) { - if (e.target.checked) { - document.documentElement.setAttribute('data-theme', 'dark'); - localStorage.setItem('theme', 'dark'); - } else { - document.documentElement.setAttribute('data-theme', 'light'); - localStorage.setItem('theme', 'light'); - } - } - - const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); - if (toggleSwitch !== null) { - toggleSwitch.addEventListener('change', switchTheme, false); - } - - var currentTheme = localStorage.getItem('theme'); - if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { - currentTheme = 'dark'; - } - if (currentTheme) { - document.documentElement.setAttribute('data-theme', currentTheme); - - if (currentTheme === 'dark' && toggleSwitch !== null) { - toggleSwitch.checked = true; - } - } -} - -window.addEventListener('DOMContentLoaded', main); -</script> - </head> <body> <div class="document" id="documentId"> diff --git a/nimdoc/test_out_index_dot_html/expected/theindex.html b/nimdoc/test_out_index_dot_html/expected/theindex.html index 34ddf8f6a..8ee62a330 100644 --- a/nimdoc/test_out_index_dot_html/expected/theindex.html +++ b/nimdoc/test_out_index_dot_html/expected/theindex.html @@ -22,49 +22,6 @@ <script type="text/javascript" src="dochack.js"></script> -<script type="text/javascript"> -function main() { - var pragmaDots = document.getElementsByClassName("pragmadots"); - for (var i = 0; i < pragmaDots.length; i++) { - pragmaDots[i].onclick = function(event) { - // Hide tease - event.target.parentNode.style.display = "none"; - // Show actual - event.target.parentNode.nextElementSibling.style.display = "inline"; - } - } - - function switchTheme(e) { - if (e.target.checked) { - document.documentElement.setAttribute('data-theme', 'dark'); - localStorage.setItem('theme', 'dark'); - } else { - document.documentElement.setAttribute('data-theme', 'light'); - localStorage.setItem('theme', 'light'); - } - } - - const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); - if (toggleSwitch !== null) { - toggleSwitch.addEventListener('change', switchTheme, false); - } - - var currentTheme = localStorage.getItem('theme'); - if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { - currentTheme = 'dark'; - } - if (currentTheme) { - document.documentElement.setAttribute('data-theme', currentTheme); - - if (currentTheme === 'dark' && toggleSwitch !== null) { - toggleSwitch.checked = true; - } - } -} - -window.addEventListener('DOMContentLoaded', main); -</script> - </head> <body> <div class="document" id="documentId"> diff --git a/nimdoc/testproject/expected/subdir/subdir_b/utils.html b/nimdoc/testproject/expected/subdir/subdir_b/utils.html index 574ac5b9b..f94da7f40 100644 --- a/nimdoc/testproject/expected/subdir/subdir_b/utils.html +++ b/nimdoc/testproject/expected/subdir/subdir_b/utils.html @@ -22,49 +22,6 @@ <script type="text/javascript" src="../../dochack.js"></script> -<script type="text/javascript"> -function main() { - var pragmaDots = document.getElementsByClassName("pragmadots"); - for (var i = 0; i < pragmaDots.length; i++) { - pragmaDots[i].onclick = function(event) { - // Hide tease - event.target.parentNode.style.display = "none"; - // Show actual - event.target.parentNode.nextElementSibling.style.display = "inline"; - } - } - - function switchTheme(e) { - if (e.target.checked) { - document.documentElement.setAttribute('data-theme', 'dark'); - localStorage.setItem('theme', 'dark'); - } else { - document.documentElement.setAttribute('data-theme', 'light'); - localStorage.setItem('theme', 'light'); - } - } - - const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); - if (toggleSwitch !== null) { - toggleSwitch.addEventListener('change', switchTheme, false); - } - - var currentTheme = localStorage.getItem('theme'); - if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { - currentTheme = 'dark'; - } - if (currentTheme) { - document.documentElement.setAttribute('data-theme', currentTheme); - - if (currentTheme === 'dark' && toggleSwitch !== null) { - toggleSwitch.checked = true; - } - } -} - -window.addEventListener('DOMContentLoaded', main); -</script> - </head> <body> <div class="document" id="documentId"> diff --git a/nimdoc/testproject/expected/testproject.html b/nimdoc/testproject/expected/testproject.html index e45492dac..cba9391af 100644 --- a/nimdoc/testproject/expected/testproject.html +++ b/nimdoc/testproject/expected/testproject.html @@ -22,49 +22,6 @@ <script type="text/javascript" src="dochack.js"></script> -<script type="text/javascript"> -function main() { - var pragmaDots = document.getElementsByClassName("pragmadots"); - for (var i = 0; i < pragmaDots.length; i++) { - pragmaDots[i].onclick = function(event) { - // Hide tease - event.target.parentNode.style.display = "none"; - // Show actual - event.target.parentNode.nextElementSibling.style.display = "inline"; - } - } - - function switchTheme(e) { - if (e.target.checked) { - document.documentElement.setAttribute('data-theme', 'dark'); - localStorage.setItem('theme', 'dark'); - } else { - document.documentElement.setAttribute('data-theme', 'light'); - localStorage.setItem('theme', 'light'); - } - } - - const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); - if (toggleSwitch !== null) { - toggleSwitch.addEventListener('change', switchTheme, false); - } - - var currentTheme = localStorage.getItem('theme'); - if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { - currentTheme = 'dark'; - } - if (currentTheme) { - document.documentElement.setAttribute('data-theme', currentTheme); - - if (currentTheme === 'dark' && toggleSwitch !== null) { - toggleSwitch.checked = true; - } - } -} - -window.addEventListener('DOMContentLoaded', main); -</script> - </head> <body> <div class="document" id="documentId"> diff --git a/nimdoc/testproject/expected/theindex.html b/nimdoc/testproject/expected/theindex.html index 88d4b86aa..47fae2491 100644 --- a/nimdoc/testproject/expected/theindex.html +++ b/nimdoc/testproject/expected/theindex.html @@ -22,49 +22,6 @@ <script type="text/javascript" src="dochack.js"></script> -<script type="text/javascript"> -function main() { - var pragmaDots = document.getElementsByClassName("pragmadots"); - for (var i = 0; i < pragmaDots.length; i++) { - pragmaDots[i].onclick = function(event) { - // Hide tease - event.target.parentNode.style.display = "none"; - // Show actual - event.target.parentNode.nextElementSibling.style.display = "inline"; - } - } - - function switchTheme(e) { - if (e.target.checked) { - document.documentElement.setAttribute('data-theme', 'dark'); - localStorage.setItem('theme', 'dark'); - } else { - document.documentElement.setAttribute('data-theme', 'light'); - localStorage.setItem('theme', 'light'); - } - } - - const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]'); - if (toggleSwitch !== null) { - toggleSwitch.addEventListener('change', switchTheme, false); - } - - var currentTheme = localStorage.getItem('theme'); - if (!currentTheme && window.matchMedia('(prefers-color-scheme: dark)').matches) { - currentTheme = 'dark'; - } - if (currentTheme) { - document.documentElement.setAttribute('data-theme', currentTheme); - - if (currentTheme === 'dark' && toggleSwitch !== null) { - toggleSwitch.checked = true; - } - } -} - -window.addEventListener('DOMContentLoaded', main); -</script> - </head> <body> <div class="document" id="documentId"> diff --git a/tools/dochack/dochack.nim b/tools/dochack/dochack.nim index 3a663808d..c7b8232ef 100644 --- a/tools/dochack/dochack.nim +++ b/tools/dochack/dochack.nim @@ -1,6 +1,39 @@ import dom import fuzzysearch + +proc switchTheme(event: Event) = + if event.target.checked: + document.documentElement.setAttribute("data-theme", "dark") + window.localStorage.setItem("theme", "dark") + else: + document.documentElement.setAttribute("data-theme", "light") + window.localStorage.setItem("theme", "light") + + +proc nimThemeSwitch(event: Event) {.exportC.} = + var pragmaDots = document.getElementsByClassName("pragmadots") + for i in 0..<pragmaDots.len: + pragmaDots[i].onclick = proc (event: Event) = + # Hide tease + event.target.parentNode.style.display = "none" + # Show actual + event.target.parentNode.nextSibling.style.display = "inline" + + let toggleSwitch = document.querySelector(".theme-switch input[type=\"checkbox\"]") + + if toggleSwitch != nil: + toggleSwitch.addEventListener("change", switchTheme, false) + + var currentTheme = window.localStorage.getItem("theme") + if currentTheme.len == 0 and window.matchMedia("(prefers-color-scheme: dark)").matches: + currentTheme = "dark" + if currentTheme.len > 0: + document.documentElement.setAttribute("data-theme", currentTheme); + + if currentTheme == "dark" and toggleSwitch != nil: + toggleSwitch.checked = true + proc textContent(e: Element): cstring {. importcpp: "#.textContent", nodecl.} @@ -396,5 +429,6 @@ proc copyToClipboard*() {.exportc.} = """ .} - + copyToClipboard() +window.addEventListener("DOMContentLoaded", nimThemeSwitch) \ No newline at end of file |