|
4 | 4 | return;
|
5 | 5 | }
|
6 | 6 |
|
| 7 | + function mapClassName(name) { |
| 8 | + var customClass = Prism.plugins.customClass; |
| 9 | + if (customClass) { |
| 10 | + return customClass.apply(name, 'none'); |
| 11 | + } else { |
| 12 | + return name; |
| 13 | + } |
| 14 | + } |
| 15 | + |
7 | 16 | var PARTNER = {
|
8 | 17 | '(': ')',
|
9 | 18 | '[': ']',
|
|
51 | 60 | }
|
52 | 61 |
|
53 | 62 | [this, getPartnerBrace(this)].forEach(function (e) {
|
54 |
| - e.classList.add('brace-hover'); |
| 63 | + e.classList.add(mapClassName('brace-hover')); |
55 | 64 | });
|
56 | 65 | }
|
57 | 66 | /**
|
58 | 67 | * @this {HTMLElement}
|
59 | 68 | */
|
60 | 69 | function leaveBrace() {
|
61 | 70 | [this, getPartnerBrace(this)].forEach(function (e) {
|
62 |
| - e.classList.remove('brace-hover'); |
| 71 | + e.classList.remove(mapClassName('brace-hover')); |
63 | 72 | });
|
64 | 73 | }
|
65 | 74 | /**
|
|
71 | 80 | }
|
72 | 81 |
|
73 | 82 | [this, getPartnerBrace(this)].forEach(function (e) {
|
74 |
| - e.classList.add('brace-selected'); |
| 83 | + e.classList.add(mapClassName('brace-selected')); |
75 | 84 | });
|
76 | 85 | }
|
77 | 86 |
|
|
102 | 111 | pre.addEventListener('mousedown', function removeBraceSelected() {
|
103 | 112 | // the code element might have been replaced
|
104 | 113 | var code = pre.querySelector('code');
|
105 |
| - Array.prototype.slice.call(code.querySelectorAll('.brace-selected')).forEach(function (e) { |
106 |
| - e.classList.remove('brace-selected'); |
| 114 | + var className = mapClassName('brace-selected'); |
| 115 | + Array.prototype.slice.call(code.querySelectorAll('.' + className)).forEach(function (e) { |
| 116 | + e.classList.remove(className); |
107 | 117 | });
|
108 | 118 | });
|
109 | 119 | Object.defineProperty(pre, '__listenerAdded', { value: true });
|
110 | 120 | }
|
111 | 121 |
|
112 | 122 | /** @type {HTMLSpanElement[]} */
|
113 |
| - var punctuation = Array.prototype.slice.call(code.querySelectorAll('span.token.punctuation')); |
| 123 | + var punctuation = Array.prototype.slice.call( |
| 124 | + code.querySelectorAll('span.' + mapClassName('token') + '.' + mapClassName('punctuation')) |
| 125 | + ); |
114 | 126 |
|
115 | 127 | /** @type {{ index: number, open: boolean, element: HTMLElement }[]} */
|
116 | 128 | var allBraces = [];
|
117 | 129 |
|
118 | 130 | toMatch.forEach(function (open) {
|
119 | 131 | var close = PARTNER[open];
|
120 |
| - var name = NAMES[open]; |
| 132 | + var name = mapClassName(NAMES[open]); |
121 | 133 |
|
122 | 134 | /** @type {[number, number][]} */
|
123 | 135 | var pairs = [];
|
|
132 | 144 | if (text === open) {
|
133 | 145 | allBraces.push({ index: i, open: true, element: element });
|
134 | 146 | element.classList.add(name);
|
135 |
| - element.classList.add('brace-open'); |
| 147 | + element.classList.add(mapClassName('brace-open')); |
136 | 148 | openStack.push(i);
|
137 | 149 | } else if (text === close) {
|
138 | 150 | allBraces.push({ index: i, open: false, element: element });
|
139 | 151 | element.classList.add(name);
|
140 |
| - element.classList.add('brace-close'); |
| 152 | + element.classList.add(mapClassName('brace-close')); |
141 | 153 | if (openStack.length) {
|
142 | 154 | pairs.push([i, openStack.pop()]);
|
143 | 155 | }
|
|
166 | 178 | allBraces.sort(function (a, b) { return a.index - b.index; });
|
167 | 179 | allBraces.forEach(function (brace) {
|
168 | 180 | if (brace.open) {
|
169 |
| - brace.element.classList.add('brace-level-' + (level % LEVEL_WARP + 1)); |
| 181 | + brace.element.classList.add(mapClassName('brace-level-' + (level % LEVEL_WARP + 1))); |
170 | 182 | level++;
|
171 | 183 | } else {
|
172 | 184 | level = Math.max(0, level - 1);
|
173 |
| - brace.element.classList.add('brace-level-' + (level % LEVEL_WARP + 1)); |
| 185 | + brace.element.classList.add(mapClassName('brace-level-' + (level % LEVEL_WARP + 1))); |
174 | 186 | }
|
175 | 187 | });
|
176 | 188 | });
|
|
0 commit comments