diff --git a/layouts/partials/head.html b/layouts/partials/head.html index 6856076e..75e8cd70 100644 --- a/layouts/partials/head.html +++ b/layouts/partials/head.html @@ -30,6 +30,7 @@ + {{ partial "analytics.html" . }} @@ -37,5 +38,23 @@ if (window.location.hostname == "phil-opp.github.io") { window.location.href = "http://os.phil-opp.com/"; } + + window.onload = function() { + var container = document.querySelector('#toc'); + + var selector = "h2"; + if (container.className.split(" ").indexOf("coarse") == -1) { + selector += ",h3"; + } + + var toc = initTOC({ + selector: selector, + scope: '.post', + overwrite: false, + prefix: 'toc' + }); + + container.appendChild(toc); + } diff --git a/static/js/toc.min.js b/static/js/toc.min.js new file mode 100644 index 00000000..041ae4d8 --- /dev/null +++ b/static/js/toc.min.js @@ -0,0 +1,9 @@ +/*! + * jQuery-TOC + * Table of Contents Generator Plugin for (non-)jQuery + * + * @author Dolphin Wood + * @version 0.0.5 + * Copyright 2015. MIT licensed. + */ +!function(e){"use strict";var t=function(e,t){for(var n in t)t.hasOwnProperty(n)&&t[n]&&(e[n]=t[n]);return e},n=function(e,t){var n=[],r=document.querySelectorAll(t);return Array.prototype.forEach.call(r,function(t){var r=t.querySelectorAll(e);n=n.concat(Array.prototype.slice.call(r))}),n},r=function(e){if("string"!=typeof e)return 0;var t=e.match(/\d/g);return t?Math.min.apply(null,t):1},o=function(e,t){for(;t--;)e=e.appendChild(document.createElement("ol")),t&&(e=e.appendChild(document.createElement("li")));return e},c=function(e,t){for(;t--;)e=e.parentElement;return e},i=function(e,t){return function(n,r,o){var c=n.textContent,i=t+"-"+o;r.textContent=c;var a=e?i:n.id||i;a=encodeURIComponent(a),n.id=a,r.href="#"+a}},a=function(e){var t=e.selector,a=e.scope,u=document.createElement("ol"),l=u,f=null,h=i(e.overwrite,e.prefix);return n(t,a).reduce(function(e,t,n){var i=r(t.tagName),a=i-e;a>0&&(l=o(f,a)),0>a&&(l=c(l,2*-a)),l=l||u;var p=document.createElement("li"),d=document.createElement("a");return h(t,d,n),l.appendChild(p).appendChild(d),f=p,i},r(t)),u},u=function(e){var n={selector:"h1, h2, h3, h4, h5, h6",scope:"body",overwrite:!1,prefix:"toc"};e=t(n,e);var r=e.selector;if("string"!=typeof r)throw new TypeError("selector must be a string");if(!r.match(/^(?:h[1-6],?\s*)+$/g))throw new TypeError("selector must contains only h1-6");var o=location.hash;return o&&setTimeout(function(){location.hash="",location.hash=o},0),a(e)};"function"==typeof define&&define.amd?define(function(){return u}):e.initTOC=u}(window);