1 | const components = require('../components.js');
|
2 | const getLoader = require('../dependencies');
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 | const loadedLanguages = new Set();
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 | function loadLanguages(languages) {
|
21 | if (languages === undefined) {
|
22 | languages = Object.keys(components.languages).filter(l => l != 'meta');
|
23 | } else if (!Array.isArray(languages)) {
|
24 | languages = [languages];
|
25 | }
|
26 |
|
27 |
|
28 |
|
29 | const loaded = [...loadedLanguages, ...Object.keys(Prism.languages)];
|
30 |
|
31 | getLoader(components, languages, loaded).load(lang => {
|
32 | if (!(lang in components.languages)) {
|
33 | if (!loadLanguages.silent) {
|
34 | console.warn('Language does not exist: ' + lang);
|
35 | }
|
36 | return;
|
37 | }
|
38 |
|
39 | const pathToLanguage = './prism-' + lang;
|
40 |
|
41 |
|
42 | delete require.cache[require.resolve(pathToLanguage)];
|
43 | delete Prism.languages[lang];
|
44 |
|
45 | require(pathToLanguage);
|
46 |
|
47 | loadedLanguages.add(lang);
|
48 | });
|
49 | }
|
50 |
|
51 |
|
52 |
|
53 |
|
54 | loadLanguages.silent = false;
|
55 |
|
56 | module.exports = loadLanguages;
|