mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-10-01 05:36:00 +00:00
Added code highlighting syntax modes
This commit is contained in:
parent
0528e98d9c
commit
2060cdb931
@ -17,18 +17,58 @@ require('codemirror/mode/yaml/yaml');
|
|||||||
|
|
||||||
const CodeMirror = require('codemirror');
|
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() {
|
module.exports.highlight = function() {
|
||||||
let codeBlocks = document.querySelectorAll('.page-content pre');
|
let codeBlocks = document.querySelectorAll('.page-content pre');
|
||||||
|
|
||||||
for (let i = 0; i < codeBlocks.length; i++) {
|
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');
|
codeBlocks[i].innerHTML = codeBlocks[i].innerHTML.replace(/<br\s*[\/]?>/gi ,'\n');
|
||||||
let content = codeBlocks[i].textContent;
|
let content = codeBlocks[i].textContent;
|
||||||
|
console.log('MODE', mode);
|
||||||
|
|
||||||
CodeMirror(function(elt) {
|
CodeMirror(function(elt) {
|
||||||
codeBlocks[i].parentNode.replaceChild(elt, codeBlocks[i]);
|
codeBlocks[i].parentNode.replaceChild(elt, codeBlocks[i]);
|
||||||
}, {
|
}, {
|
||||||
value: content,
|
value: content,
|
||||||
mode: "",
|
mode: mode,
|
||||||
lineNumbers: true,
|
lineNumbers: true,
|
||||||
theme: 'base16-light',
|
theme: 'base16-light',
|
||||||
readOnly: true
|
readOnly: true
|
||||||
|
@ -399,7 +399,7 @@ module.exports = function (ngApp, events) {
|
|||||||
|
|
||||||
// Handle image upload and add image into markdown content
|
// Handle image upload and add image into markdown content
|
||||||
function uploadImage(file) {
|
function uploadImage(file) {
|
||||||
if (file.type.indexOf('image') !== 0) return;
|
if (file === null || !file.type.indexOf('image') !== 0) return;
|
||||||
let formData = new FormData();
|
let formData = new FormData();
|
||||||
let ext = 'png';
|
let ext = 'png';
|
||||||
let xhr = new XMLHttpRequest();
|
let xhr = new XMLHttpRequest();
|
||||||
|
Loading…
Reference in New Issue
Block a user