1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5var outline_root = null; 6var root = null; 7var outline_ptr = null; 8 9function onEnter(node) { 10 var li = document.createElement('li'); 11 outline_ptr.appendChild(li); 12 13 var header = node.querySelector('h1'); 14 header.id = 'sec_' + header.textContent.replace(/ /g, '_'); 15 var link = document.createElement('a'); 16 link.href = '#' + header.id; 17 link.textContent = header.textContent; 18 li.appendChild(link); 19 var ul = document.createElement('ul'); 20 li.appendChild(ul); 21 outline_ptr = ul; 22} 23 24function onExit(node) { 25 outline_ptr = outline_ptr.parentNode.parentNode; 26} 27 28function outline(node) { 29 var in_toc = !node.classList.contains('not_in_toc'); 30 if (in_toc) { 31 onEnter(node); 32 } 33 var child = node.firstChild; 34 while (child) { 35 if (child.tagName === 'SECTION') { 36 outline(child); 37 } 38 child = child.nextSibling; 39 } 40 if (in_toc) { 41 onExit(node); 42 } 43} 44 45 46window.onload = function () { 47 outline_root = document.getElementById('outline'); 48 root = document.getElementById('root'); 49 50 var ul = document.createElement('ul'); 51 outline_root.appendChild(ul); 52 outline_ptr = ul; 53 54 outline(root); 55};