|
|
|
@ -6,7 +6,6 @@ |
|
|
|
* |
|
|
|
* |
|
|
|
* High Level API: |
|
|
|
* High Level API: |
|
|
|
* |
|
|
|
* |
|
|
|
* // Load basic dependencies and language support for present code tags
|
|
|
|
|
|
|
|
* api.init() |
|
|
|
* api.init() |
|
|
|
* |
|
|
|
* |
|
|
|
* |
|
|
|
* |
|
|
|
@ -17,7 +16,6 @@ |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
(function (global) { |
|
|
|
(function (global) { |
|
|
|
|
|
|
|
|
|
|
|
// Load minimal requirements
|
|
|
|
|
|
|
|
function loadInitialScriptsAndStyles() { |
|
|
|
function loadInitialScriptsAndStyles() { |
|
|
|
var link = |
|
|
|
var link = |
|
|
|
document.createElement('link'); |
|
|
|
document.createElement('link'); |
|
|
|
@ -29,51 +27,29 @@ |
|
|
|
'stylesheet'; |
|
|
|
'stylesheet'; |
|
|
|
|
|
|
|
|
|
|
|
link.href = |
|
|
|
link.href = |
|
|
|
'https://cdnjs.cloudflare.com/ajax/libs/prism/1.5.1/themes/prism-tomorrow.min.css'; |
|
|
|
'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.5.0/styles/railscasts.min.css'; |
|
|
|
|
|
|
|
|
|
|
|
mainScript.src = |
|
|
|
mainScript.src = |
|
|
|
'https://cdnjs.cloudflare.com/ajax/libs/prism/1.5.1/prism.min.js'; |
|
|
|
'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.5.0/highlight.min.js'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// On main script load, configure marked
|
|
|
|
mainScript.addEventListener('load', function () { |
|
|
|
mainScript.addEventListener('load', function () { |
|
|
|
// Escape early if back-end rendering is used
|
|
|
|
|
|
|
|
if (!('marked' in global)) { |
|
|
|
|
|
|
|
// @TODO Autoload er
|
|
|
|
|
|
|
|
return Prism.highlightAll(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Set up autoloading
|
|
|
|
|
|
|
|
marked.setOptions({ |
|
|
|
marked.setOptions({ |
|
|
|
highlight: function (code, language) { |
|
|
|
langPrefix: 'hljs lang-', |
|
|
|
if (!(language in Prism.languages)) { |
|
|
|
highlight: function (code) { |
|
|
|
var additionalLanguageScript = |
|
|
|
return hljs.highlightAuto(code).value; |
|
|
|
document.createElement('script'); |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
additionalLanguageScript.src = |
|
|
|
|
|
|
|
'https://cdnjs.cloudflare.com/ajax/libs/prism/1.5.1/components/prism-' + language + '.min.js'; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// On success, highlight code for given language
|
|
|
|
|
|
|
|
additionalLanguageScript.addEventListener('load', function () { |
|
|
|
|
|
|
|
[].forEach.call(document.querySelectorAll('.lang-' + language), function (element) { |
|
|
|
|
|
|
|
Prism.highlightElement(element); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
// Remove if language not available
|
|
|
|
|
|
|
|
additionalLanguageScript.addEventListener('error', function () { |
|
|
|
|
|
|
|
document.body.removeChild(additionalLanguageScript); |
|
|
|
|
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
document.body.appendChild(additionalLanguageScript); |
|
|
|
// Extend marked.js on edit page only
|
|
|
|
|
|
|
|
if ('marked' in global) { |
|
|
|
|
|
|
|
document.body.appendChild(mainScript); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return Prism.highlight(code, Prism.languages[language] || Prism.languages.markup); |
|
|
|
// Preview page requires scripts only
|
|
|
|
}, |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
document.head.appendChild(link); |
|
|
|
document.head.appendChild(link); |
|
|
|
document.body.appendChild(mainScript); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// High Level API
|
|
|
|
// High Level API
|
|
|
|
|