|
- const components = require('../components.js');
- const getLoader = require('../dependencies');
-
-
- /**
- * The set of all languages which have been loaded using the below function.
- *
- * @type {Set<string>}
- */
- const loadedLanguages = new Set();
-
- /**
- * Loads the given languages and adds them to the current Prism instance.
- *
- * If no languages are provided, __all__ Prism languages will be loaded.
- *
- * @param {string|string[]} [languages]
- * @returns {void}
- */
- function loadLanguages(languages) {
- if (languages === undefined) {
- languages = Object.keys(components.languages).filter(l => l != 'meta');
- } else if (!Array.isArray(languages)) {
- languages = [languages];
- }
-
- // the user might have loaded languages via some other way or used `prism.js` which already includes some
- // we don't need to validate the ids because `getLoader` will ignore invalid ones
- const loaded = [...loadedLanguages, ...Object.keys(Prism.languages)];
-
- getLoader(components, languages, loaded).load(lang => {
- if (!(lang in components.languages)) {
- if (!loadLanguages.silent) {
- console.warn('Language does not exist: ' + lang);
- }
- return;
- }
-
- const pathToLanguage = './prism-' + lang;
-
- // remove from require cache and from Prism
- delete require.cache[require.resolve(pathToLanguage)];
- delete Prism.languages[lang];
-
- require(pathToLanguage);
-
- loadedLanguages.add(lang);
- });
- }
-
- /**
- * Set this to `true` to prevent all warning messages `loadLanguages` logs.
- */
- loadLanguages.silent = false;
-
- module.exports = loadLanguages;
|