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(/<br\s*[\/]?>/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
// Handle image upload and add image into markdown content
function uploadImage(file) {
- if (file.type.indexOf('image') !== 0) return;
+ if (file === null || !file.type.indexOf('image') !== 0) return;
let formData = new FormData();
let ext = 'png';
let xhr = new XMLHttpRequest();