1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- 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;
|