Repository navigation
Expand file tree
/
Copy pathindex.js
More file actions
86 lines (68 loc) · 2.02 KB
/
Copy pathindex.js
File metadata and controls
86 lines (68 loc) · 2.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
var CodeMirror = require('codemirror')
require('codemirror/addon/runmode/runmode.js')
// Use CodeMirror to render static code higlighting
//
// Example:
//
// <pre class="lang-ruby">
// puts 'awesome' if true
// </pre>
//
var Highlighter = {
aliases: {
'bash' : 'text/x-sh',
'c' : 'text/x-csrc',
'html' : 'text/html',
'js' : 'text/javascript',
'json' : 'application/json',
'java' : 'text/x-java',
'markup': 'text/html',
'sass' : 'text/x-sass',
'scss' : 'text/x-scss',
'sh' : 'text/x-sh'
},
addAlias: function(newAliases) {
for (var key in newAliases) {
self.aliases[key] = newAliases[key]
}
},
aliasLang: function(lang) {
return(self.aliases[lang] || lang)
},
process: function(code, lang, output) {
var options = {'json': false}
if(lang == 'json') {
options.json = true
}
CodeMirror.runMode(code, self.aliasLang(lang), output, options)
},
highlightEl: function(element) {
var lang = element.dataset.lang || element.dataset.language
if (!lang) {
classMatch = element.className.match(/lang.*?-(\S+)/)
if (classMatch){
lang = classMatch[1]
} else {
// If we can't determine language, skip it.
return
}
}
// Standardize classes: lang-[language]
if (element.classList.contains('language-'+lang)) {
element.classList.remove('language-'+lang)
}
element.classList.add('lang-'+lang)
element.classList.add('highlighted')
var code = element.textContent.trim()
self.process(code, lang, element)
element.innerHTML = "<code class='highlighted-code static-code cm-s-default'>" + element.innerHTML + "</code>"
},
highlight: function(selector) {
selector = selector || '[class*="language-"], [class*="lang-"], [data-lang], [data-language]'
var elements = document.querySelectorAll(selector);
Array.prototype.forEach.call(elements, function(element) {
self.highlightEl(element)
})
}
}
module.exports = self = Highlighter