UNPKG

mss-sdk

Version:
34 lines (33 loc) 1.1 kB
function generateTOC() { if ($('#filecontents').length == 0) return; var _toc = $('<ul class="top"></ul>'); var show = false; var toc = _toc; var counter = 0; var tags = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']; for (i in tags) { tags[i] = '#filecontents > ' + tags[i] } var lastTag = parseInt(tags[0][1]); $(tags.join(', ')).each(function() { if (this.id == "filecontents") return; show = true; var thisTag = parseInt(this.tagName[1]); if (this.id.length == 0) { var proposedId = $(this).text().replace(/[^a-z0-9-]/ig, '_'); if ($('#' + proposedId).length > 0) proposedId += counter++; this.id = proposedId; } if (thisTag > lastTag) { for (var i = 0; i < thisTag - lastTag; i++) { var tmp = $('<ul/>'); toc.append(tmp); toc = tmp; } } if (thisTag < lastTag) { for (var i = 0; i < lastTag - thisTag; i++) toc = toc.parent(); } toc.append('<li><a href="#' + this.id + '">' + $(this).text() + '</a></li>'); lastTag = thisTag; }); if (!show) return; $('#toc').append() $('#toc').append(_toc); }