MediaWiki:Gadget-prism-language-javascript-extras.js

来自萌娘共享
跳转至: 导航搜索

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

  • 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-javascript/MediaWiki:Gadget-prism-language-javascript-extras.js|user=[[U:AnnAngela]]|co-authors=GH:github-actions[bot]、[[U:Bhsd]]|longId=2d5d0ae30421796cfa323a02a78713c0ed261417|shortId=2d5d0ae3|summary=feat(Gadget/prism): 新的代码高亮工具 (#443)|body=<nowiki>Co-authored-by: github-actions[bot] <41898282+github-actions[bot]📧users.noreply.github.com>↩Co-authored-by: Bhsd <55071315+bhsd-harry📧users.noreply.github.com></nowiki>}}'; 

/* <pre> */

"use strict";
(function (Prism) {
    Prism.languages.insertBefore('javascript', 'function-variable', {
        'method-variable': {
            pattern: RegExp('(\\.\\s*)' + Prism.languages.javascript['function-variable'].pattern.source),
            lookbehind: true,
            alias: ['function-variable', 'method', 'function', 'property-access']
        }
    });
    Prism.languages.insertBefore('javascript', 'function', {
        'method': {
            pattern: RegExp('(\\.\\s*)' + Prism.languages.javascript['function'].source),
            lookbehind: true,
            alias: ['function', 'property-access']
        }
    });
    Prism.languages.insertBefore('javascript', 'constant', {
        'known-class-name': [
            {
                pattern: /\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,
                alias: 'class-name'
            },
            {
                pattern: /\b(?:[A-Z]\w*)Error\b/,
                alias: 'class-name'
            }
        ]
    });
    function withId(source, flags) {
        return RegExp(source.replace(/<ID>/g, function () { return /(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source; }), flags);
    }
    Prism.languages.insertBefore('javascript', 'keyword', {
        'imports': {
            pattern: withId(/(\bimport\b\s*)(?:<ID>(?:\s*,\s*(?:\*\s*as\s+<ID>|\{[^{}]*\}))?|\*\s*as\s+<ID>|\{[^{}]*\})(?=\s*\bfrom\b)/.source),
            lookbehind: true,
            inside: Prism.languages.javascript
        },
        'exports': {
            pattern: withId(/(\bexport\b\s*)(?:\*(?:\s*as\s+<ID>)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),
            lookbehind: true,
            inside: Prism.languages.javascript
        }
    });
    Prism.languages.javascript['keyword'].unshift({
        pattern: /\b(?:as|default|export|from|import)\b/,
        alias: 'module'
    }, {
        pattern: /\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,
        alias: 'control-flow'
    }, {
        pattern: /\bnull\b/,
        alias: ['null', 'nil']
    }, {
        pattern: /\bundefined\b/,
        alias: 'nil'
    });
    Prism.languages.insertBefore('javascript', 'operator', {
        'spread': {
            pattern: /\.{3}/,
            alias: 'operator'
        },
        'arrow': {
            pattern: /=>/,
            alias: 'operator'
        }
    });
    Prism.languages.insertBefore('javascript', 'punctuation', {
        'property-access': {
            pattern: withId(/(\.\s*)#?<ID>/.source),
            lookbehind: true
        },
        'maybe-class-name': {
            pattern: /(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,
            lookbehind: true
        },
        'dom': {
            pattern: /\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,
            alias: 'variable'
        },
        'console': {
            pattern: /\bconsole(?=\s*\.)/,
            alias: 'class-name'
        }
    });
    var maybeClassNameTokens = ['function', 'function-variable', 'method', 'method-variable', 'property-access'];
    for (var i = 0; i < maybeClassNameTokens.length; i++) {
        var token = maybeClassNameTokens[i];
        var value = Prism.languages.javascript[token];
        if (Prism.util.type(value) === 'RegExp') {
            value = Prism.languages.javascript[token] = {
                pattern: value
            };
        }
        var inside = value.inside || {};
        value.inside = inside;
        inside['maybe-class-name'] = /^[A-Z][\s\S]*/;
    }
}(Prism)); 

/* </pre> */