wikiplus-highlight 3.0.1 → 3.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +13 -3
- package/dist/main.js +38 -7
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -12,13 +12,13 @@
|
|
|
12
12
|
在*个人 JS 页*添加以下代码:
|
|
13
13
|
|
|
14
14
|
```javascript
|
|
15
|
-
mw.loader.load('//cdn.jsdelivr.net/npm/wikiplus-highlight@3.0.
|
|
15
|
+
mw.loader.load('//cdn.jsdelivr.net/npm/wikiplus-highlight@3.0.3');
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
或
|
|
19
19
|
|
|
20
20
|
```javascript
|
|
21
|
-
mw.loader.load('//unpkg.com/wikiplus-highlight@3.0.
|
|
21
|
+
mw.loader.load('//unpkg.com/wikiplus-highlight@3.0.3');
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
### 稳定版本
|
|
@@ -32,7 +32,7 @@ mw.loader.load('//cdn.jsdelivr.net/npm/wikiplus-highlight');
|
|
|
32
32
|
或
|
|
33
33
|
|
|
34
34
|
```javascript
|
|
35
|
-
mw.loader.load('//unpkg.com/wikiplus-highlight
|
|
35
|
+
mw.loader.load('//unpkg.com/wikiplus-highlight');
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
由于 CDN 的缓存机制,稳定版本的更新大约会滞后一周。
|
|
@@ -92,6 +92,16 @@ MediaWiki 模式下自动闭合生效的字符包括 `(`、`[`、`{` 和 `"`,
|
|
|
92
92
|
|
|
93
93
|
这个功能基于 [wikiparser-node](https://github.com/bhsd-harry/wikiparser-node)。开启后将在编辑框内提示可能存在的维基语法错误。
|
|
94
94
|
|
|
95
|
+
### 添加 WikiEditor 工具栏
|
|
96
|
+
|
|
97
|
+
*加入的版本:3.0.2*
|
|
98
|
+
|
|
99
|
+
工具栏遵从当前网站安装的 [WikiEditor](https://www.mediawiki.org/wiki/Extension:WikiEditor) 扩展的版本。
|
|
100
|
+
|
|
101
|
+
### 自动填充
|
|
102
|
+
|
|
103
|
+
自动填充功能会在输入 `{{` 或 `__` 时自动填充魔术字,输入 `<` 或 `</` 时自动填充标签名。
|
|
104
|
+
|
|
95
105
|
### 调整缩进
|
|
96
106
|
|
|
97
107
|
这是一个设置选项。默认设置下使用 Tab 进行缩进。
|
package/dist/main.js
CHANGED
|
@@ -8,14 +8,21 @@
|
|
|
8
8
|
if ('wphl' in mw.libs) {
|
|
9
9
|
return;
|
|
10
10
|
}
|
|
11
|
-
const version = '3.0.
|
|
11
|
+
const version = '3.0.3';
|
|
12
12
|
mw.libs['wphl'] = { version }; // 开始加载
|
|
13
13
|
// 路径
|
|
14
|
-
const CDN = '//testingcf.jsdelivr.net', MW_CDN = 'npm/@bhsd/codemirror-mediawiki@2.4.
|
|
14
|
+
const CDN = '//testingcf.jsdelivr.net', MW_CDN = 'npm/@bhsd/codemirror-mediawiki@2.4.5/dist/mw.min.js', REPO_CDN = 'npm/wikiplus-highlight';
|
|
15
15
|
const { wgPageName: page, wgNamespaceNumber: ns, wgPageContentModel: contentmodel, } = mw.config.get();
|
|
16
|
-
const
|
|
16
|
+
const CONTENTMODELS = {
|
|
17
17
|
'sanitized-css': 'css',
|
|
18
18
|
wikitext: 'mediawiki',
|
|
19
|
+
}, EXTS = {
|
|
20
|
+
css: 'css',
|
|
21
|
+
js: 'javascript',
|
|
22
|
+
json: 'json',
|
|
23
|
+
}, NAMESPACES = {
|
|
24
|
+
828: 'lua',
|
|
25
|
+
274: 'html',
|
|
19
26
|
};
|
|
20
27
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, @typescript-eslint/unbound-method
|
|
21
28
|
const getObject = mw.storage.getObject || ((key) => JSON.parse(String(localStorage.getItem(key))));
|
|
@@ -31,10 +38,34 @@
|
|
|
31
38
|
script.src = `${CDN}/${MW_CDN}`;
|
|
32
39
|
document.head.appendChild(script);
|
|
33
40
|
});
|
|
34
|
-
/**
|
|
35
|
-
|
|
41
|
+
/**
|
|
42
|
+
* 检查页面语言类型
|
|
43
|
+
* @param value 页面内容
|
|
44
|
+
*/
|
|
45
|
+
const getPageMode = async (value) => {
|
|
46
|
+
if (typeof _WikiplusPages === 'object') {
|
|
47
|
+
const pages = Object.values(_WikiplusPages)
|
|
48
|
+
.filter(({ sectionCache }) => Object.values(sectionCache).includes(value));
|
|
49
|
+
if (pages.some(({ title }) => !title.endsWith('/doc'))) {
|
|
50
|
+
await mw.loader.using('mediawiki.Title');
|
|
51
|
+
}
|
|
52
|
+
const modes = new Set(pages.map(({ title }) => {
|
|
53
|
+
var _a;
|
|
54
|
+
if (title.endsWith('/doc')) {
|
|
55
|
+
return 'mediawiki';
|
|
56
|
+
}
|
|
57
|
+
const t = new mw.Title(title), namespace = t.getNamespaceId();
|
|
58
|
+
return namespace % 2
|
|
59
|
+
? 'mediawiki'
|
|
60
|
+
: EXTS[((_a = t.getExtension()) === null || _a === void 0 ? void 0 : _a.toLowerCase()) || ''] || NAMESPACES[namespace] || 'mediawiki';
|
|
61
|
+
}));
|
|
62
|
+
if (modes.size === 1) {
|
|
63
|
+
const [mode] = modes;
|
|
64
|
+
return mode;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
36
67
|
if (ns !== 274 && contentmodel !== 'Scribunto' || page.endsWith('/doc')) {
|
|
37
|
-
return
|
|
68
|
+
return CONTENTMODELS[contentmodel] || contentmodel;
|
|
38
69
|
}
|
|
39
70
|
await mw.loader.using('oojs-ui-windows');
|
|
40
71
|
if (await OO.ui.confirm(mw.msg('cm-mw-contentmodel'), {
|
|
@@ -51,7 +82,7 @@
|
|
|
51
82
|
*/
|
|
52
83
|
const renderEditor = async ($target, setting) => {
|
|
53
84
|
await init();
|
|
54
|
-
const cm = await CodeMirror6.fromTextArea($target[0], setting ? 'json' : await getPageMode());
|
|
85
|
+
const cm = await CodeMirror6.fromTextArea($target[0], setting ? 'json' : await getPageMode($target.val()));
|
|
55
86
|
cm.view.dom.id = 'Wikiplus-CodeMirror';
|
|
56
87
|
document.querySelector('#Wikiplus-Quickedit-Jump > a').href = '#Wikiplus-CodeMirror';
|
|
57
88
|
if (!setting) { // 普通Wikiplus编辑区
|