You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
2.1 KiB
56 lines
2.1 KiB
window.initStyleGuide = function(init) { |
|
// Runs the callback on every element matched by the query selector. |
|
function find(querySelector, callback) { |
|
var elements = [].slice.call(document.querySelectorAll(querySelector)); |
|
for (var i = 0; i < elements.length; i++) { |
|
callback(elements[i]); |
|
} |
|
} |
|
// Add the tocDiv at the top. |
|
var title = document.getElementsByTagName('h1')[0]; |
|
var toc = document.createElement('div'); |
|
toc.id = 'tocDiv'; |
|
toc.className = 'vertical_toc'; |
|
title.parentNode.insertBefore(toc, title.nextSibling); |
|
|
|
// If a paragraph starts with (e.g.) "Note:" or "Tip:" then add |
|
// that "callout class" to its element. |
|
find('p', function(paragraph) { |
|
var match = /^([a-z]+):/i.exec(paragraph.textContent); |
|
if (match) { |
|
paragraph.classList.add(match[1].toLowerCase()); |
|
} |
|
}); |
|
|
|
// Fill in text for intra-document links, ensuring that links |
|
// remain up-to-date even if sections are moved or renumbered. |
|
// This triggers on any link with "??" as its text and a URL |
|
// starting with "#", and the filled-in text is exactly the same |
|
// as the text of the referenced section heading. |
|
find('a[href^="#"]', function(link) { |
|
var href = link.getAttribute('href'); |
|
var heading = document.getElementById(href.substring(1)); |
|
// Fill in link text with heading title |
|
if (heading && link.textContent == '??') { |
|
link.textContent = heading.textContent; |
|
} |
|
}); |
|
|
|
// Hoedown renders fenced code blocks incompatibly with what |
|
// prettify expects. As a result, prettify doesn't handle them |
|
// properly. Fix it by moving the code directly into the pre. |
|
find('pre > code', function(code) { |
|
var pre = code.parentElement; |
|
pre.className = code.className; |
|
pre.innerHTML = code.innerHTML; |
|
}); |
|
|
|
// Run the normal init function. |
|
init(); |
|
|
|
// Call the pretty-printer after we've fixed up the code blocks. |
|
var pretty = document.createElement('script'); |
|
pretty.src = 'https://cdn.rawgit.com/google/code-prettify/master/loader/' + |
|
'run_prettify.js'; |
|
document.body.appendChild(pretty); |
|
}.bind(null, window.initStyleGuide);
|
|
|