MediaWiki:Gadget-prism-plugin-jsdoc.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-plugin-jsdoc/MediaWiki:Gadget-prism-plugin-jsdoc.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) {
    var javascript = Prism.languages.javascript;
    var type = /\{(?:[^{}]|\{(?:[^{}]|\{[^{}]*\})*\})+\}/.source;
    var parameterPrefix = '(@(?:arg|argument|param|property)\\s+(?:' + type + '\\s+)?)';
    Prism.languages.jsdoc = Prism.languages.extend('javadoclike', {
        'parameter': {
            pattern: RegExp(parameterPrefix + /(?:(?!\s)[$\w\xA0-\uFFFF.])+(?=\s|$)/.source),
            lookbehind: true,
            inside: {
                'punctuation': /\./
            }
        }
    });
    Prism.languages.insertBefore('jsdoc', 'keyword', {
        'optional-parameter': {
            pattern: RegExp(parameterPrefix + /\[(?:(?!\s)[$\w\xA0-\uFFFF.])+(?:=[^[\]]+)?\](?=\s|$)/.source),
            lookbehind: true,
            inside: {
                'parameter': {
                    pattern: /(^\[)[$\w\xA0-\uFFFF\.]+/,
                    lookbehind: true,
                    inside: {
                        'punctuation': /\./
                    }
                },
                'code': {
                    pattern: /(=)[\s\S]*(?=\]$)/,
                    lookbehind: true,
                    inside: javascript,
                    alias: 'language-javascript'
                },
                'punctuation': /[=[\]]/
            }
        },
        'class-name': [
            {
                pattern: RegExp(/(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\s+(?:<TYPE>\s+)?)[A-Z]\w*(?:\.[A-Z]\w*)*/.source.replace(/<TYPE>/g, function () { return type; })),
                lookbehind: true,
                inside: {
                    'punctuation': /\./
                }
            },
            {
                pattern: RegExp('(@[a-z]+\\s+)' + type),
                lookbehind: true,
                inside: {
                    'string': javascript.string,
                    'number': javascript.number,
                    'boolean': javascript.boolean,
                    'keyword': Prism.languages.typescript.keyword,
                    'operator': /=>|\.\.\.|[&|?:*]/,
                    'punctuation': /[.,;=<>{}()[\]]/
                }
            }
        ],
        'example': {
            pattern: /(@example\s+(?!\s))(?:[^@\s]|\s+(?!\s))+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/,
            lookbehind: true,
            inside: {
                'code': {
                    pattern: /^([\t ]*(?:\*\s*)?)\S.*$/m,
                    lookbehind: true,
                    inside: javascript,
                    alias: 'language-javascript'
                }
            }
        }
    });
    Prism.languages.javadoclike.addSupport('javascript', Prism.languages.jsdoc);
}(Prism)); 

/* </pre> */