Page MenuHomeMusing Studio

No OneTemporary

diff --git a/templates/include/post-render.tmpl b/templates/include/post-render.tmpl
index 8ff2bbb..8e694a0 100644
--- a/templates/include/post-render.tmpl
+++ b/templates/include/post-render.tmpl
@@ -1,50 +1,73 @@
<!-- Miscelaneous render related template parts we use multiple times -->
{{define "highlighting"}}
<script>
// TODO: this feels more like a mutation observer
addEventListener('DOMContentLoaded', function () {
- var hlbaseUri = "//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/";
- var x = document.querySelectorAll("code[class^='language-']");
- if (x.length > 0) {
- // We have blocks to be highlighted, so we load css + js
+ var hlbaseUri = "https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.13.1/";
+ var lb = document.querySelectorAll("code[class^='language-']");
+
+ // Set langs to the langs that are included by default (for now: 'common set' on CDN)
+ var langs = ["apache", "bash", "coffeescript", "cpp", "cs", "css", "diff",
+ "http", "ini", "java", "javascript", "json", "makefile", "xml",
+ "markdown", "nginx", "objectivec", "perl", "php", "properties",
+ "python", "ruby", "shell", "sql"];
+
+ // Given a set of nodes, run highlighting on them
+ function highlight(nodes) {
+ for (i=0; i < nodes.length; i++) {
+ hljs.highlightBlock(nodes[i]);
+ }
+ }
+
+ // Given a array of URIs, load them in order
+ function loadLanguages(uris, callback) {
+ uris.forEach(function(uri) {
+ var sc=document.createElement('script');
+ sc.src=uri; sc.async=false; // critical?
+ if( uris.indexOf(uri) == uris.length-1) {
+ sc.onload = callback;
+ }
+ document.head.appendChild(sc);
+ });
+ }
+
+ // We don't have to do anything if there are no language blocks
+ if (lb.length > 0) {
+ // We have blocks to be highlighted, so we load css
var st = document.createElement('link');
st.rel = "stylesheet";
st.href = hlbaseUri + "styles/atom-one-light.min.css";
- document.getElementsByTagName('head')[0].appendChild(st);
-
- var sc = document.createElement('script');
- sc.type = "text/javascript";
- sc.src = hlbaseUri + "highlight.min.js";
- sc.async = true;
+ document.head.appendChild(st);
- // Here's the crux, we need to react on load event for this new element to make it work.
- sc.onload = () => { highlight(x) }
- document.getElementsByTagName('head')[0].appendChild(sc);
-
- // Given a set of nodes, run highlighting on them
- function highlight(nodes) {
- for (i=0; i < nodes.length; i++) {
- hljs.highlightBlock(nodes[i]);
- }
+ // Construct set of files to load, in order
+ var jss = [hlbaseUri + "highlight.min.js"];
+ // Check what we need to load
+ for (i=0; i < lb.length; i++) {
+ lang = lb[i].className.replace('language-','');
+ if (!langs.includes(lang)) {
+ jss.push(hlbaseUri + "languages/" + lang + ".min.js");
+ }
}
+ // Load files in order, higlight on last load
+ loadLanguages(jss, () => {highlight(lb)});
}
});
</script>
{{end}}
<!-- Include mathjax configuration -->
{{define "mathjax"}}
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
extensions: ["tex2jax.js"],
jax: ["input/TeX", "output/HTML-CSS"],
tex2jax: {
inlineMath: [ ['$','$'], ["\\(","\\)"] ],
displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
processEscapes: true
},
"HTML-CSS": { fonts: ["TeX"] }
});
</script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML" async></script>
{{end}}

File Metadata

Mime Type
text/x-diff
Expires
Sat, Nov 23, 3:49 PM (1 d, 4 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3104621

Event Timeline