Skip to content

Commit fd07f77

Browse files
committed
feat: udpate highlight.js deps
1 parent ae8585e commit fd07f77

File tree

4 files changed

+160
-109
lines changed

4 files changed

+160
-109
lines changed

package-lock.json

Lines changed: 21 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,8 @@
246246
"eslint-plugin-react-hooks": "^4.6.0",
247247
"flowchart.js": "^1.12.2",
248248
"glob": "^7.1.4",
249-
"highlight.js": "^10.4.1",
249+
"highlight.js": "11.7.0",
250+
"highlightjs-solidity": "^2.0.5",
250251
"ignore-loader": "^0.1.2",
251252
"imports-loader": "^4.0.1",
252253
"jquery": "^3.5.0",

src/extension.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
// Import the module and reference it with the alias vscode in your code below
33
import * as vscode from 'vscode';
44

5-
import * as hljs from 'highlight.js/lib/highlight';
5+
import hljs from 'highlight.js/lib/core';
6+
import { solidity } from 'highlightjs-solidity';
67
import * as markdownitContainer from 'markdown-it-container';
78
import ReactTreeView from 'react-vsc-treeview';
89
import * as S from 'string';
@@ -47,7 +48,7 @@ if (process.env.RUNTIME !== 'browser') {
4748
hljs.registerLanguage('bash', require('highlight.js/lib/languages/bash'));
4849
hljs.registerLanguage('clojure', require('highlight.js/lib/languages/clojure'));
4950
hljs.registerLanguage('coffeescript', require('highlight.js/lib/languages/coffeescript'));
50-
hljs.registerLanguage('cs', require('highlight.js/lib/languages/cs'));
51+
hljs.registerLanguage('cs', require('highlight.js/lib/languages/csharp'));
5152
hljs.registerLanguage('css', require('highlight.js/lib/languages/css'));
5253
hljs.registerLanguage('elm', require('highlight.js/lib/languages/elm'));
5354
hljs.registerLanguage('xml', require('highlight.js/lib/languages/xml'));
@@ -66,6 +67,11 @@ hljs.registerLanguage('lua', require('highlight.js/lib/languages/lua'));
6667
hljs.registerLanguage('nginx', require('highlight.js/lib/languages/nginx'));
6768
hljs.registerLanguage('perl', require('highlight.js/lib/languages/perl'));
6869
hljs.registerLanguage('dockerfile', require('highlight.js/lib/languages/dockerfile'));
70+
hljs.registerLanguage('julia', require('highlight.js/lib/languages/julia'));
71+
hljs.registerLanguage('ocaml', require('highlight.js/lib/languages/ocaml'));
72+
hljs.registerLanguage('verilog', require('highlight.js/lib/languages/verilog'));
73+
hljs.registerLanguage('solidity', solidity);
74+
hljs.registerLanguage('vb', require('highlight.js/lib/languages/vbnet'));
6975

7076
const prismLangs = [
7177
'haskell',

src/page.ts

Lines changed: 129 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -20,27 +20,124 @@ import Viz from 'viz.js';
2020
import { Module, render } from 'viz.js/full.render.js';
2121

2222
function init() {
23-
const mermaids = $('span.mermaid.raw');
24-
mermaids.removeClass('raw');
25-
mermaids.each((key, value) => {
23+
try {
24+
updateMermaid();
25+
updateFlowcharts();
26+
updateSequences();
27+
updateGraphviz();
28+
updateMathjax();
29+
updateABC();
30+
updateExtraTags();
31+
updateLineNumbers();
32+
} catch (err) {
33+
console.error(err);
34+
}
35+
}
36+
37+
window.addEventListener('vscode.markdown.updateContent', init);
38+
39+
init();
40+
41+
function updateLineNumbers() {
42+
// update continue line numbers
43+
const linenumberdivs = $('.gutter.linenumber').toArray();
44+
for (let i = 0; i < linenumberdivs.length; i++) {
45+
if ($(linenumberdivs[i]).hasClass('continue')) {
46+
const startnumber = linenumberdivs[i - 1]
47+
? parseInt(
48+
$(linenumberdivs[i - 1])
49+
.find('> span')
50+
.last()
51+
.attr('data-linenumber')
52+
)
53+
: 0;
54+
$(linenumberdivs[i])
55+
.find('> span')
56+
.each((key, value) => {
57+
$(value).attr('data-linenumber', startnumber + key + 1);
58+
});
59+
}
60+
}
61+
}
62+
63+
function updateABC() {
64+
$('span.abc.raw')
65+
.removeClass('raw')
66+
.each((key, value) => {
67+
let $value;
68+
try {
69+
$value = $(value);
70+
const $ele = $(value).parent().parent();
71+
72+
abcjs.renderAbc(value, $value.text());
73+
74+
$ele.addClass('abc');
75+
$value.children().unwrap().unwrap();
76+
const svg = $ele.find('> svg');
77+
svg[0].setAttribute('viewBox', `0 0 ${svg.attr('width')} ${svg.attr('height')}`);
78+
svg[0].setAttribute('preserveAspectRatio', 'xMidYMid meet');
79+
} catch (err) {
80+
$value.unwrap();
81+
$value.parent().append(`<div class="alert alert-warning">${S(err).escapeHTML().s}</div>`);
82+
console.warn(err);
83+
}
84+
});
85+
}
86+
87+
function updateMathjax() {
88+
$('span.mathjax.raw')
89+
.removeClass('raw')
90+
.each(function (key, value) {
91+
const $value = $(value);
92+
const $ele = $(value).parent().parent();
93+
$value.unwrap();
94+
95+
let result;
96+
if ($(value).hasClass('display')) {
97+
result = katex.renderToString($value.text(), {
98+
throwOnError: false,
99+
displayMode: true,
100+
});
101+
} else {
102+
result = katex.renderToString($value.text(), {
103+
throwOnError: false,
104+
});
105+
}
106+
107+
$value.html(result);
108+
$value.children().unwrap();
109+
});
110+
}
111+
112+
function updateSequences() {
113+
const sequences = $('span.sequence-diagram.raw');
114+
sequences.removeClass('raw');
115+
sequences.each((key, value) => {
26116
let $ele;
27117
try {
28118
const $value = $(value);
29-
$ele = $(value).closest('pre');
119+
$ele = $(value).parent().parent();
30120

31-
mermaid.parse($value.text());
32-
$ele.addClass('mermaid');
33-
$ele.html($value.text());
34-
mermaid.init(undefined, $ele);
121+
const sequence = $value as any;
122+
sequence.sequenceDiagram({
123+
theme: 'simple',
124+
});
125+
126+
$ele.addClass('sequence-diagram');
127+
$value.children().unwrap().unwrap();
128+
const svg = $ele.find('> svg');
129+
svg[0].setAttribute('viewBox', `0 0 ${svg.attr('width')} ${svg.attr('height')}`);
130+
svg[0].setAttribute('preserveAspectRatio', 'xMidYMid meet');
35131
} catch (err) {
36132
// $value.unwrap()
37-
// $value.parent().append(`<div class="alert alert-warning">${S(err.str).escapeHTML().s}</div>`)
133+
// $value.parent().append(`<div class="alert alert-warning">${S(err).escapeHTML().s}</div>`)
38134
// console.warn(err)
39-
// console.log($value.text())
40-
$ele.addClass('mermaid');
135+
$ele.addClass('sequence-diagram');
41136
}
42137
});
138+
}
43139

140+
function updateFlowcharts() {
44141
const flows = $('span.flow-chart.raw');
45142
flows.removeClass('raw');
46143
flows.each((key, value) => {
@@ -66,35 +163,36 @@ function init() {
66163
$ele.addClass('flow-chart');
67164
}
68165
});
166+
}
69167

70-
const sequences = $('span.sequence-diagram.raw');
71-
sequences.removeClass('raw');
72-
sequences.each((key, value) => {
168+
function updateMermaid() {
169+
const mermaids = $('span.mermaid.raw');
170+
mermaids.removeClass('raw');
171+
mermaids.each((key, value) => {
73172
let $ele;
74173
try {
75174
const $value = $(value);
76-
$ele = $(value).parent().parent();
175+
$ele = $(value).closest('pre');
77176

78-
const sequence = $value as any;
79-
sequence.sequenceDiagram({
80-
theme: 'simple',
81-
});
177+
const text = $value.text();
82178

83-
$ele.addClass('sequence-diagram');
84-
$value.children().unwrap().unwrap();
85-
const svg = $ele.find('> svg');
86-
svg[0].setAttribute('viewBox', `0 0 ${svg.attr('width')} ${svg.attr('height')}`);
87-
svg[0].setAttribute('preserveAspectRatio', 'xMidYMid meet');
179+
if (mermaid.parse(text)) {
180+
$ele.addClass('mermaid');
181+
$ele.text(text);
182+
mermaid.init(undefined, $ele);
183+
}
88184
} catch (err) {
89185
// $value.unwrap()
90-
// $value.parent().append(`<div class="alert alert-warning">${S(err).escapeHTML().s}</div>`)
91-
// console.warn(err)
92-
$ele.addClass('sequence-diagram');
186+
// $value.parent().append(`<div class="alert alert-warning">${S(err.str).escapeHTML().s}</div>`)
187+
console.warn(err);
188+
// console.log($value.text())
189+
$ele.addClass('mermaid');
93190
}
94191
});
192+
}
95193

194+
function updateGraphviz() {
96195
let viz = new Viz({ Module, render });
97-
98196
const graphvizs = $('span.graphviz.raw');
99197
graphvizs.removeClass('raw');
100198
graphvizs.each(function (key, value) {
@@ -116,7 +214,7 @@ function init() {
116214
$value.children().unwrap();
117215
})
118216
.catch((err) => {
119-
viz = new Viz({ Module, render });
217+
viz = new Viz({ Module, render: init });
120218

121219
// $value.parent().append(`<div class="alert alert-warning">${S(err).escapeHTML().s}</div>`)
122220
// console.warn(err)
@@ -126,52 +224,9 @@ function init() {
126224
// console.warn(err)
127225
}
128226
});
227+
}
129228

130-
$('span.mathjax.raw')
131-
.removeClass('raw')
132-
.each(function (key, value) {
133-
const $value = $(value);
134-
const $ele = $(value).parent().parent();
135-
$value.unwrap();
136-
137-
let result;
138-
if ($(value).hasClass('display')) {
139-
result = katex.renderToString($value.text(), {
140-
throwOnError: false,
141-
displayMode: true,
142-
});
143-
} else {
144-
result = katex.renderToString($value.text(), {
145-
throwOnError: false,
146-
});
147-
}
148-
149-
$value.html(result);
150-
$value.children().unwrap();
151-
});
152-
153-
$('span.abc.raw')
154-
.removeClass('raw')
155-
.each((key, value) => {
156-
let $value;
157-
try {
158-
$value = $(value);
159-
const $ele = $(value).parent().parent();
160-
161-
abcjs.renderAbc(value, $value.text());
162-
163-
$ele.addClass('abc');
164-
$value.children().unwrap().unwrap();
165-
const svg = $ele.find('> svg');
166-
svg[0].setAttribute('viewBox', `0 0 ${svg.attr('width')} ${svg.attr('height')}`);
167-
svg[0].setAttribute('preserveAspectRatio', 'xMidYMid meet');
168-
} catch (err) {
169-
$value.unwrap();
170-
$value.parent().append(`<div class="alert alert-warning">${S(err).escapeHTML().s}</div>`);
171-
console.warn(err);
172-
}
173-
});
174-
229+
function updateExtraTags() {
175230
// regex for extra tags
176231
const spaceregex = /\s*/;
177232
const notinhtmltagregex = /(?![^<]*>|[^<>]*<\/)/;
@@ -209,28 +264,4 @@ function init() {
209264
$(value).closest('blockquote').css('border-left-color', $(value).attr('data-color'));
210265
});
211266
});
212-
213-
// update continue line numbers
214-
const linenumberdivs = $('.gutter.linenumber').toArray();
215-
for (let i = 0; i < linenumberdivs.length; i++) {
216-
if ($(linenumberdivs[i]).hasClass('continue')) {
217-
const startnumber = linenumberdivs[i - 1]
218-
? parseInt(
219-
$(linenumberdivs[i - 1])
220-
.find('> span')
221-
.last()
222-
.attr('data-linenumber')
223-
)
224-
: 0;
225-
$(linenumberdivs[i])
226-
.find('> span')
227-
.each((key, value) => {
228-
$(value).attr('data-linenumber', startnumber + key + 1);
229-
});
230-
}
231-
}
232267
}
233-
234-
window.addEventListener('vscode.markdown.updateContent', init);
235-
236-
init();

0 commit comments

Comments
 (0)