diff --git a/frappe/utils/data.py b/frappe/utils/data.py index 0d902ba33f..3cff6d18e0 100644 --- a/frappe/utils/data.py +++ b/frappe/utils/data.py @@ -943,6 +943,7 @@ def md_to_html(markdown_text): 'fenced-code-blocks': None, 'tables': None, 'header-ids': None, + 'highlightjs-lang': None, 'html-classes': { 'table': 'table table-bordered' } diff --git a/frappe/website/js/syntax_highlight.js b/frappe/website/js/syntax_highlight.js new file mode 100644 index 0000000000..199174b1e5 --- /dev/null +++ b/frappe/website/js/syntax_highlight.js @@ -0,0 +1,18 @@ +const hljs = require('highlight.js/lib/highlight'); + +hljs.registerLanguage('javascript', require('highlight.js/lib/languages/javascript')); +hljs.registerLanguage('python', require('highlight.js/lib/languages/python')); +hljs.registerLanguage('xml', require('highlight.js/lib/languages/xml')); +hljs.registerLanguage('django', require('highlight.js/lib/languages/django')); +hljs.registerLanguage('bash', require('highlight.js/lib/languages/bash')); +hljs.registerLanguage('css', require('highlight.js/lib/languages/css')); +hljs.registerLanguage('markdown', require('highlight.js/lib/languages/markdown')); +hljs.registerLanguage('diff', require('highlight.js/lib/languages/diff')); +hljs.registerLanguage('json', require('highlight.js/lib/languages/json')); +hljs.registerLanguage('less', require('highlight.js/lib/languages/less')); +hljs.registerLanguage('nginx', require('highlight.js/lib/languages/nginx')); +hljs.registerLanguage('scss', require('highlight.js/lib/languages/scss')); +hljs.registerLanguage('shell', require('highlight.js/lib/languages/shell')); +hljs.registerLanguage('sql', require('highlight.js/lib/languages/sql')); + +module.exports = hljs; diff --git a/frappe/website/js/website.js b/frappe/website/js/website.js index 7937795e7d..5744ebd977 100644 --- a/frappe/website/js/website.js +++ b/frappe/website/js/website.js @@ -2,7 +2,7 @@ // MIT License. See license.txt /* eslint-disable no-console */ -import hljs from 'highlight.js'; +import hljs from './syntax_highlight'; frappe.provide("website"); frappe.provide("frappe.awesome_bar_path"); @@ -265,9 +265,7 @@ $.extend(frappe, { }, highlight_code_blocks: function() { - $('pre code').each(function(i, block) { - hljs.highlightBlock(block); - }); + hljs.initHighlighting(); }, bind_filters: function() { // set in select diff --git a/requirements.txt b/requirements.txt index 9bf61b0424..3144d9de7b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,7 +3,7 @@ chardet dropbox==7.3.1 gunicorn jinja2 -markdown2 +markdown2==2.3.5 PyMySQL maxminddb-geolite2 python-dateutil