MediaWiki:Gadget-prism-language-markup-templating.js

来自萌娘共享
AnnAngela-dbot讨论 | 贡献2024年4月22日 (一) 17:08的版本 (代码变动:0640d524 - auto(Gadget-prism-language-php): bump prismjs to 1.29.0 by prefetch by github-actions[bot])
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

注意:在保存之后,您可能需要清除浏览器缓存才能看到所作出的变更的影响。

  • Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5Ctrl-R(Mac为⌘-R
  • Google Chrome:Ctrl-Shift-R(Mac为⌘-Shift-R
  • Internet Explorer:按住Ctrl的同时单击刷新,或按Ctrl-F5
  • Opera:前往菜单 → 设置(Mac为Opera → Preferences),然后隐私和安全 → 清除浏览数据 → 缓存的图片和文件
/**
 * -------------------------------------------------------------------------
 * !!! DON'T MODIFY THIS PAGE MANUALLY, YOUR CHANGES WILL BE OVERWRITTEN !!!
 * -------------------------------------------------------------------------
 */
var _addText = '{{GHIACode|page=GHIA:MoegirlPediaInterfaceCodes/blob/master/src/gadgets/prism-language-php/MediaWiki:Gadget-prism-language-markup-templating.js|user=github-actions[bot]|co-authors=|longId=0640d5244d4a27e8dfe368cb1c9d3bcab48bd424|shortId=0640d524|summary=auto(Gadget-prism-language-php): bump prismjs to 1.29.0 by prefetch}}'; 

/* <pre> */

"use strict";
(function (Prism) {
    function getPlaceholder(language, index) {
        return '___' + language.toUpperCase() + index + '___';
    }
    Object.defineProperties(Prism.languages['markup-templating'] = {}, {
        buildPlaceholders: {
            value: function (env, language, placeholderPattern, replaceFilter) {
                if (env.language !== language) {
                    return;
                }
                var tokenStack = env.tokenStack = [];
                env.code = env.code.replace(placeholderPattern, function (match) {
                    if (typeof replaceFilter === 'function' && !replaceFilter(match)) {
                        return match;
                    }
                    var i = tokenStack.length;
                    var placeholder;
                    while (env.code.indexOf(placeholder = getPlaceholder(language, i)) !== -1) {
                        ++i;
                    }
                    tokenStack[i] = match;
                    return placeholder;
                });
                env.grammar = Prism.languages.markup;
            }
        },
        tokenizePlaceholders: {
            value: function (env, language) {
                if (env.language !== language || !env.tokenStack) {
                    return;
                }
                env.grammar = Prism.languages[language];
                var j = 0;
                var keys = Object.keys(env.tokenStack);
                function walkTokens(tokens) {
                    for (var i = 0; i < tokens.length; i++) {
                        if (j >= keys.length) {
                            break;
                        }
                        var token = tokens[i];
                        if (typeof token === 'string' || (token.content && typeof token.content === 'string')) {
                            var k = keys[j];
                            var t = env.tokenStack[k];
                            var s = typeof token === 'string' ? token : token.content;
                            var placeholder = getPlaceholder(language, k);
                            var index = s.indexOf(placeholder);
                            if (index > -1) {
                                ++j;
                                var before = s.substring(0, index);
                                var middle = new Prism.Token(language, Prism.tokenize(t, env.grammar), 'language-' + language, t);
                                var after = s.substring(index + placeholder.length);
                                var replacement = [];
                                if (before) {
                                    replacement.push.apply(replacement, walkTokens([before]));
                                }
                                replacement.push(middle);
                                if (after) {
                                    replacement.push.apply(replacement, walkTokens([after]));
                                }
                                if (typeof token === 'string') {
                                    tokens.splice.apply(tokens, [i, 1].concat(replacement));
                                }
                                else {
                                    token.content = replacement;
                                }
                            }
                        }
                        else if (token.content) {
                            walkTokens(token.content);
                        }
                    }
                    return tokens;
                }
                walkTokens(env.tokens);
            }
        }
    });
}(Prism)); 

/* </pre> */