forked from javascript-tutorial/server
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathextendedCode.js
More file actions
executable file
·53 lines (40 loc) · 1.29 KB
/
extendedCode.js
File metadata and controls
executable file
·53 lines (40 loc) · 1.29 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
'use strict';
/**
* Adds `key:Ctrl+B` support to code_inline
* @param md
*/
module.exports = function(md) {
md.renderer.rules.code_inline = function(tokens, idx, options, env, slf) {
let token = tokens[idx];
let content = token.content.trim();
if (content.indexOf('key:') == 0) {
return renderKey(content.slice(4));
} else {
let codePrefixes = ['pattern', 'match', 'subject'];
for (var i = 0; i < codePrefixes.length; i++) {
var prefix = codePrefixes[i];
if (content.startsWith(prefix + ':')) {
return `<code class="${prefix}">${md.utils.escapeHtml(content.slice(prefix.length + 1))}</code>`;
}
}
}
return '<code>' + md.utils.escapeHtml(content) + '</code>';
};
function renderKey(keys) {
var results = [];
if (keys === '+') {
return `<kbd class="shortcut">+</kbd>`;
}
var plusLabel = Math.random();
keys = keys.replace(/\+\+/g, '+' + plusLabel);
keys = keys.split('+');
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
results.push((key == plusLabel) ? '+' : md.utils.escapeHtml(key));
if (i < keys.length - 1) {
results.push('<span class="shortcut__plus">+</span>');
}
}
return `<kbd class="shortcut">${results.join('')}</kbd>`;
}
};