script/doc.js (46 lines of code) (raw):

var scripts = [ "http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js", ]; for(i = 0; i < scripts.length; i++) { document.write("<script src='" + scripts[i] + "'></script>"); } function check_flag() { if ($("body").hasClass("complete")) { throw "Document processing is already complete."; } } function raise_flag() { $("body").addClass("complete"); } function add_toc() { var old_depth = 0; var html = ""; $("*/[id!='']").each(function(index) { var id = $(this).attr("id"); var name = $(this)[0].nodeName; var text = $(this).text(); if (name.length != 2 || name.slice(0, 1) != "H") { return; } var new_depth = name.slice(1,2); if (new_depth > old_depth) { html += "<ul>"; } else if (new_depth < old_depth) { html += "</li></ul></li>"; } else { html += "</li>"; } html += "<li><a href='#" + id + "'>" + text + "</a>"; old_depth = new_depth; }); html += "</li></ul>"; $(".toc").append(html); } document.onready = function() { try { check_flag(); raise_flag(); add_toc(); } catch (error) { // uh oh } }