cmarrin | 7210944 | 2009-12-09 19:24:49 +0000 | [diff] [blame] | 1 | function nextLevel(nodeList, startIndex, hlevel, prefix, tocString) |
| 2 | { |
| 3 | var hIndex = 1; |
| 4 | var i = startIndex; |
| 5 | |
| 6 | while (i < nodeList.length) { |
| 7 | var currentNode = nodeList[i]; |
| 8 | |
| 9 | if (currentNode.tagName != "H"+hlevel) |
| 10 | break; |
| 11 | |
| 12 | if (currentNode.className == "no-toc") { |
| 13 | ++i; |
| 14 | continue; |
| 15 | } |
| 16 | |
| 17 | var sectionString = prefix+hIndex; |
| 18 | |
| 19 | // Update the TOC |
| 20 | var text = currentNode.innerHTML; |
kbr_google | 61dfd04 | 2010-05-17 20:55:23 +0000 | [diff] [blame] | 21 | // Strip off names specified via <a name="..."></a> |
| 22 | var tocText = text.replace(/<a name=[\'\"][^\'\"]*[\'\"]>([^<]*)<\/a>/g, "$1"); |
kbr_google | 8a0a941 | 2010-05-17 19:04:01 +0000 | [diff] [blame] | 23 | tocString.s += "<li class='toc-h"+hlevel+"'><a href='#"+sectionString+"'><span class='secno'>"+sectionString+"</span>"+tocText+"</a></li>\n"; |
cmarrin | 7210944 | 2009-12-09 19:24:49 +0000 | [diff] [blame] | 24 | |
| 25 | // Modify the header |
| 26 | currentNode.innerHTML = "<span class=secno>"+sectionString+"</span> "+text; |
| 27 | currentNode.id = sectionString; |
| 28 | |
| 29 | // traverse children |
| 30 | i = nextLevel(nodeList, i+1, hlevel+1, sectionString+".", tocString); |
| 31 | hIndex++; |
| 32 | } |
| 33 | |
| 34 | return i; |
| 35 | } |
| 36 | |
| 37 | function generateTOC(toc) |
| 38 | { |
| 39 | var nodeList = $("h2,h3,h4,h5,h6"); |
| 40 | var tocString = { s:"<ul class='toc'>\n" }; |
| 41 | nextLevel(nodeList, 0, 2, "", tocString); |
| 42 | toc.innerHTML = tocString.s; |
cmarrin | 3a52524 | 2010-09-07 16:54:49 +0000 | [diff] [blame] | 43 | |
| 44 | // Now position the document, in case a #xxx directive was given |
| 45 | var id = window.location.hash.substring(1); |
| 46 | if (id.length > 0) { |
| 47 | var target = document.getElementById(id); |
| 48 | if (target) { |
Steven Dwy | 5a782ca | 2022-02-24 23:47:21 -0800 | [diff] [blame] | 49 | target.scrollIntoView(); |
cmarrin | 3a52524 | 2010-09-07 16:54:49 +0000 | [diff] [blame] | 50 | } |
| 51 | } |
cmarrin | 7210944 | 2009-12-09 19:24:49 +0000 | [diff] [blame] | 52 | } |