Repository navigation
Expand file tree
/
Copy pathcodeLanguageDetector.worker.ts
More file actions
76 lines (70 loc) · 2.14 KB
/
Copy pathcodeLanguageDetector.worker.ts
File metadata and controls
76 lines (70 loc) · 2.14 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
import hljs from 'highlight.js/lib/core';
import bash from 'highlight.js/lib/languages/bash';
import c from 'highlight.js/lib/languages/c';
import cpp from 'highlight.js/lib/languages/cpp';
import csharp from 'highlight.js/lib/languages/csharp';
import css from 'highlight.js/lib/languages/css';
import diff from 'highlight.js/lib/languages/diff';
import go from 'highlight.js/lib/languages/go';
import graphql from 'highlight.js/lib/languages/graphql';
import java from 'highlight.js/lib/languages/java';
import javascript from 'highlight.js/lib/languages/javascript';
import json from 'highlight.js/lib/languages/json';
import kotlin from 'highlight.js/lib/languages/kotlin';
import markdown from 'highlight.js/lib/languages/markdown';
import php from 'highlight.js/lib/languages/php';
import python from 'highlight.js/lib/languages/python';
import ruby from 'highlight.js/lib/languages/ruby';
import rust from 'highlight.js/lib/languages/rust';
import scss from 'highlight.js/lib/languages/scss';
import sql from 'highlight.js/lib/languages/sql';
import swift from 'highlight.js/lib/languages/swift';
import typescript from 'highlight.js/lib/languages/typescript';
import xml from 'highlight.js/lib/languages/xml';
import yaml from 'highlight.js/lib/languages/yaml';
import {
CodeLanguageDetectionRequest,
CodeLanguageDetectionResponse,
getCodeLanguageHint
} from '@/codeLanguageDetectorShared';
const languages = {
bash,
c,
cpp,
csharp,
css,
diff,
go,
graphql,
java,
javascript,
json,
kotlin,
markdown,
php,
python,
ruby,
rust,
scss,
sql,
swift,
typescript,
xml,
yaml
};
for(const language in languages) {
hljs.registerLanguage(language, languages[language as keyof typeof languages]);
}
self.addEventListener('message', (event: MessageEvent<CodeLanguageDetectionRequest>) => {
const {id, code} = event.data;
let language = getCodeLanguageHint(code);
if(!language) {
try {
language = hljs.highlightAuto(code).language;
} catch(error) {
console.error('Code language detection error', error);
}
}
const response: CodeLanguageDetectionResponse = {id, language};
self.postMessage(response);
});