X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/0528e98d9c7d09dca2e12dab8e2df703f8557f63..refs/pull/422/head:/resources/assets/js/code.js diff --git a/resources/assets/js/code.js b/resources/assets/js/code.js index 872b13426..020c38365 100644 --- a/resources/assets/js/code.js +++ b/resources/assets/js/code.js @@ -17,18 +17,58 @@ require('codemirror/mode/yaml/yaml'); const CodeMirror = require('codemirror'); +const modeMap = { + css: 'css', + c: 'clike', + java: 'clike', + scala: 'clike', + kotlin: 'clike', + 'c++': 'clike', + 'c#': 'clike', + csharp: 'clike', + go: 'go', + html: 'htmlmixed', + javascript: 'javascript', + json: {name: 'javascript', json: true}, + js: 'javascript', + php: 'php', + md: 'markdown', + mdown: 'markdown', + markdown: 'markdown', + nginx: 'nginx', + powershell: 'powershell', + py: 'python', + python: 'python', + ruby: 'ruby', + rb: 'ruby', + shell: 'shell', + bash: 'shell', + toml: 'toml', + sql: 'sql', + xml: 'xml', + yaml: 'yaml', + yml: 'yaml', +}; + module.exports.highlight = function() { let codeBlocks = document.querySelectorAll('.page-content pre'); for (let i = 0; i < codeBlocks.length; i++) { + let innerCodeElem = codeBlocks[i].querySelector('code[class^=language-]'); + let mode = ''; + if (innerCodeElem !== null) { + let langName = innerCodeElem.className.replace('language-', ''); + if (typeof modeMap[langName] !== 'undefined') mode = modeMap[langName]; + } codeBlocks[i].innerHTML = codeBlocks[i].innerHTML.replace(//gi ,'\n'); let content = codeBlocks[i].textContent; + console.log('MODE', mode); CodeMirror(function(elt) { codeBlocks[i].parentNode.replaceChild(elt, codeBlocks[i]); }, { value: content, - mode: "", + mode: mode, lineNumbers: true, theme: 'base16-light', readOnly: true