| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- (function () {
- if (
- (typeof self === 'undefined' || !self.Prism) &&
- (typeof global === 'undefined' || !global.Prism)
- ) {
- return;
- }
- /**
- * @callback ClassMapper
- * @param {string} className
- * @param {string} language
- * @returns {string}
- *
- * @callback ClassAdder
- * @param {ClassAdderEnvironment} env
- * @returns {undefined | string | string[]}
- *
- * @typedef ClassAdderEnvironment
- * @property {string} language
- * @property {string} type
- * @property {string} content
- */
- // options
- /** @type {ClassAdder | undefined} */
- var adder;
- /** @type {ClassMapper | undefined} */
- var mapper;
- /** @type {string} */
- var prefixString = '';
- Prism.plugins.customClass = {
- /**
- * Sets the function which can be used to add custom aliases to any token.
- *
- * @param {ClassAdder} classAdder
- */
- add: function (classAdder) {
- adder = classAdder;
- },
- /**
- * Maps all class names using the given object or map function.
- *
- * This does not affect the prefix.
- *
- * @param {Object<string, string> | ClassMapper} classMapper
- */
- map: function map(classMapper) {
- if (typeof classMapper === 'function') {
- mapper = classMapper;
- } else {
- mapper = function (className) {
- return classMapper[className] || className;
- };
- }
- },
- /**
- * Adds the given prefix to all class names.
- *
- * @param {string} string
- */
- prefix: function prefix(string) {
- prefixString = string || '';
- }
- }
- Prism.hooks.add('wrap', function (env) {
- if (adder) {
- var result = adder({
- content: env.content,
- type: env.type,
- language: env.language
- });
- if (Array.isArray(result)) {
- env.classes.push.apply(env.classes, result);
- } else if (result) {
- env.classes.push(result);
- }
- }
- if (!mapper && !prefixString) {
- return;
- }
- env.classes = env.classes.map(function (c) {
- return prefixString + (mapper ? mapper(c, env.language) : c);
- });
- });
- })();
|