Skip to content

Commit

Permalink
feat(Gadget/prism): 新的代码高亮工具 (#443)
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
3 people committed Apr 3, 2024
1 parent 120e5af commit 2d5d0ae
Show file tree
Hide file tree
Showing 80 changed files with 7,108 additions and 7 deletions.
28 changes: 28 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,31 @@ src/gadgets/libip/MediaWiki:Gadget-libip.js linguist-generated=true
# From prefetch
src/gadgets/libJSON5/MediaWiki:Gadget-libJSON5.js linguist-generated=true
src/gadgets/localforage/MediaWiki:Gadget-localforage.js linguist-generated=true
src/gadgets/prism-language-clike/MediaWiki:Gadget-prism-language-clike.js linguist-generated=true
src/gadgets/prism-core/MediaWiki:Gadget-prism-core.js linguist-generated=true
src/gadgets/prism-core/MediaWiki:Gadget-prism-coy.css linguist-generated=true
src/gadgets/prism-core/MediaWiki:Gadget-prism-line-numbers.js linguist-generated=true
src/gadgets/prism-core/MediaWiki:Gadget-prism-line-numbers.css linguist-generated=true
src/gadgets/prism-core/MediaWiki:Gadget-prism-inline-color.js linguist-generated=true
src/gadgets/prism-core/MediaWiki:Gadget-prism-inline-color.css linguist-generated=true
src/gadgets/prism-language-css/MediaWiki:Gadget-prism-language-css.js linguist-generated=true
src/gadgets/prism-language-css/MediaWiki:Gadget-prism-language-css-extras.js linguist-generated=true
src/gadgets/prism-language-javascript/MediaWiki:Gadget-prism-language-javascript.js linguist-generated=true
src/gadgets/prism-language-javascript/MediaWiki:Gadget-prism-language-javascript-extras.js linguist-generated=true
src/gadgets/prism-language-json/MediaWiki:Gadget-prism-language-json.js linguist-generated=true
src/gadgets/prism-language-json/MediaWiki:Gadget-prism-language-json5.js linguist-generated=true
src/gadgets/prism-language-latex/MediaWiki:Gadget-prism-language-latex.js linguist-generated=true
src/gadgets/prism-language-lua/MediaWiki:Gadget-prism-language-lua.js linguist-generated=true
src/gadgets/prism-language-markup/MediaWiki:Gadget-prism-language-markup.js linguist-generated=true
src/gadgets/prism-language-php/MediaWiki:Gadget-prism-language-php.js linguist-generated=true
src/gadgets/prism-language-php/MediaWiki:Gadget-prism-language-php-extras.js linguist-generated=true
src/gadgets/prism-language-regex/MediaWiki:Gadget-prism-language-regex.js linguist-generated=true
src/gadgets/prism-language-typescript/MediaWiki:Gadget-prism-language-typescript.js linguist-generated=true
src/gadgets/prism-language-yaml/MediaWiki:Gadget-prism-language-yaml.js linguist-generated=true
src/gadgets/prism-plugin-javadoclike/MediaWiki:Gadget-prism-plugin-javadoclike.js linguist-generated=true
src/gadgets/prism-plugin-jsdoc/MediaWiki:Gadget-prism-plugin-jsdoc.js linguist-generated=true
src/gadgets/prism-plugin-match-braces/MediaWiki:Gadget-prism-plugin-match-braces.js linguist-generated=true
src/gadgets/prism-plugin-match-braces/MediaWiki:Gadget-prism-plugin-match-braces.css linguist-generated=true
src/gadgets/prism-plugin-phpdoc/MediaWiki:Gadget-prism-plugin-phpdoc.js linguist-generated=true
src/gadgets/prism-plugin-previewers/MediaWiki:Gadget-prism-plugin-previewers.js linguist-generated=true
src/gadgets/prism-plugin-previewers/MediaWiki:Gadget-prism-plugin-previewers.css linguist-generated=true
5 changes: 5 additions & 0 deletions .stylelintrc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@ reportNeedlessDisables: true

ignoreFiles:
- dist/**/*.css
- src/gadgets/prism-core/MediaWiki:Gadget-prism-coy.css
- src/gadgets/prism-core/MediaWiki:Gadget-prism-line-numbers.css
- src/gadgets/prism-core/MediaWiki:Gadget-prism-inline-color.css
- src/gadgets/prism-plugin-match-braces/MediaWiki:Gadget-prism-plugin-match-braces.css
- src/gadgets/prism-plugin-previewers/MediaWiki:Gadget-prism-plugin-previewers.css

rules:
selector-id-pattern: null
Expand Down
2 changes: 2 additions & 0 deletions .vscode/json-schemas/user-rights-definition.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,14 @@
"additionalProperties": false,
"definitions": {
"fabricatedUserRights": {
"$comment": "虚拟权限,hidden 用于隐藏小工具,disabled 用于禁用小工具",
"enum": [
"hidden",
"disabled"
]
},
"userRights": {
"$comment": "自动从萌娘百科获取的权限列表",
"enum": [
"abusefilter-hidden-log",
"abusefilter-hide-log",
Expand Down
19 changes: 19 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,25 @@
"Gadget/noticeActivity",
"Gadget/patrolCount",
"Gadget/patrolPlus",
"Gadget/prism",
"Gadget/prism-core",
"Gadget/prism-language-clike",
"Gadget/prism-language-css",
"Gadget/prism-language-javascript",
"Gadget/prism-language-json",
"Gadget/prism-language-latex",
"Gadget/prism-language-lua",
"Gadget/prism-language-markup",
"Gadget/prism-language-php",
"Gadget/prism-language-regex",
"Gadget/prism-language-typescript",
"Gadget/prism-language-wiki",
"Gadget/prism-language-yaml",
"Gadget/prism-plugin-javadoclike",
"Gadget/prism-plugin-jsdoc",
"Gadget/prism-plugin-match-braces",
"Gadget/prism-plugin-phpdoc",
"Gadget/prism-plugin-previewers",
"Gadget/Purgecache",
"Gadget/queryContributions",
"Gadget/queryWhatlinkshere",
Expand Down
1 change: 1 addition & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,7 @@ const config = [
ace: false,
libCachedCode: false,
CodeMirror: false,
Prism: false,
},
},
},
Expand Down
6 changes: 6 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
"@types/jquery": "^3.5.29",
"@types/moment": "^2.13.0",
"@types/oojs-ui": "^0.49.0",
"@types/prismjs": "^1.26.3",
"autoprefixer": "^10.4.19",
"browser-pack-flat": "^3.5.0",
"browserify": "^17.0.0",
Expand Down
19 changes: 16 additions & 3 deletions scripts/prefetch/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,16 @@ const labels = ["ci:prefetch"];

const prefetchTargetsPath = "scripts/prefetch/targets.yaml";
/**
* @type {({ type: "npm", moduleName: string, gadget: { name: string, fileName: string }, distFilePath: string, version?: string, appendCode?: string, ignoreSemverDiff?: semver.ReleaseType[] } | { type: "custom", gadget: { name: string, fileName: string }, url: string })[]}
* @typedef { { gadget: { name: string, fileName: string }, appendCode?: string, removeCode?: string[] } } prefetchTargetBase
*/
/**
* @typedef { prefetchTargetBase & { type: "npm", moduleName: string, distFilePath: string, version?: string, ignoreSemverDiff?: semver.ReleaseType[] } } prefetchTargetFromNPM
*/
/**
* @typedef { prefetchTargetBase & { type: "custom", url: string } } prefetchTargetFromCustom
*/
/**
* @type {(prefetchTargetFromNPM | prefetchTargetFromCustom)[]}
*/
const prefetchTargets = await yamlModule.readFile(prefetchTargetsPath);
startGroup("prefetchTargets:");
Expand All @@ -23,7 +32,7 @@ endGroup();
const fileList = [];
for (const prefetchTarget of prefetchTargets) {
console.info("target:", prefetchTarget);
const { type, moduleName, gadget: { name, fileName }, distFilePath, version, appendCode, ignoreSemverDiff, url } = prefetchTarget;
const { type, moduleName, gadget: { name, fileName }, distFilePath, version, appendCode, removeCode = [], ignoreSemverDiff, url } = prefetchTarget;
const file = path.join("src/gadgets", name, fileName);
fileList.push(file);
console.info(`[${name}]`, "Start to fetch...");
Expand All @@ -33,6 +42,7 @@ for (const prefetchTarget of prefetchTargets) {
const filePath = path.posix.join("npm", packageName, distFilePath);
const url = new URL(filePath, "https://cdn.jsdelivr.net/");
console.info(`[${name}]`, `url: ${url}`);
prefetchTarget.jsdelivrUrl = url;
const response = await fetch(url, {
method: "GET",
});
Expand All @@ -46,6 +56,9 @@ for (const prefetchTarget of prefetchTargets) {
return await response.text();
}
})();
if (data.startsWith("Couldn't find the requested file")) {
throw new Error(`[${name}] Couldn't find the requested file.`);
}
console.info(`[${name}]`, "Successfully fetched.");
const code = [
"/**",
Expand All @@ -55,7 +68,7 @@ for (const prefetchTarget of prefetchTargets) {
for (const [k, v] of Object.entries(prefetchTarget)) {
code.push(` * ${k}: ${JSON.stringify(v, null, 1).replace(/\n */g, " ")}`);
}
code.push(" */", data.replace(/(?<=\n)\/\/\/ *<reference [^\n]+\n?/ig, ""));
code.push(" */", removeCode.reduce((p, c) => p.replaceAll(c, ""), data.replace(/(?<=\n)\/\/\/ *<reference [^\n]+\n?/ig, "")));
if (typeof appendCode === "string") {
code.push(appendCode);
}
Expand Down
Loading

0 comments on commit 2d5d0ae

Please sign in to comment.