wikiparser-node 1.27.0 → 1.28.1
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/bundle/bundle-es8.min.js +25 -25
- package/bundle/bundle-lsp.min.js +29 -29
- package/bundle/bundle.min.js +24 -25
- package/config/default.json +15 -16
- package/config/jawiki.json +15 -16
- package/dist/addon/token.js +1 -1
- package/dist/base.d.mts +2 -2
- package/dist/base.d.ts +2 -2
- package/dist/base.js +1 -0
- package/dist/base.mjs +1 -0
- package/dist/bin/config.js +11 -11
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -3
- package/dist/internal.d.ts +5 -5
- package/dist/lib/lintConfig.js +7 -5
- package/dist/lib/lsp.d.ts +1 -1
- package/dist/lib/lsp.js +5 -2
- package/dist/lib/node.js +51 -40
- package/dist/mixin/attributesParent.js +59 -57
- package/dist/mixin/elementLike.js +77 -75
- package/dist/mixin/hidden.js +3 -3
- package/dist/mixin/nodeLike.js +2 -2
- package/dist/mixin/padded.js +9 -7
- package/dist/mixin/singleLine.d.ts +1 -1
- package/dist/mixin/singleLine.js +10 -11
- package/dist/parser/commentAndExt.js +5 -2
- package/dist/parser/hrAndDoubleUnderscore.js +9 -8
- package/dist/parser/html.js +1 -1
- package/dist/parser/selector.js +2 -1
- package/dist/src/arg.js +4 -5
- package/dist/src/atom.d.ts +1 -1
- package/dist/src/atom.js +0 -1
- package/dist/src/attribute.d.ts +5 -7
- package/dist/src/attribute.js +18 -8
- package/dist/src/attributes.d.ts +7 -8
- package/dist/src/attributes.js +5 -3
- package/dist/src/commented.d.ts +3 -3
- package/dist/src/converterRule.js +1 -1
- package/dist/src/heading.js +1 -1
- package/dist/src/imageParameter.d.ts +0 -8
- package/dist/src/imageParameter.js +56 -25
- package/dist/src/imagemapLink.js +1 -1
- package/dist/src/index.d.ts +0 -5
- package/dist/src/index.js +2 -5
- package/dist/src/link/base.js +1 -2
- package/dist/src/link/category.js +1 -2
- package/dist/src/link/file.js +9 -11
- package/dist/src/link/galleryImage.d.ts +0 -3
- package/dist/src/link/galleryImage.js +3 -2
- package/dist/src/link/index.js +1 -1
- package/dist/src/magicLink.d.ts +0 -7
- package/dist/src/magicLink.js +12 -1
- package/dist/src/multiLine/gallery.d.ts +49 -0
- package/dist/src/{gallery.js → multiLine/gallery.js} +24 -37
- package/dist/src/multiLine/imagemap.d.ts +25 -0
- package/dist/src/{imagemap.js → multiLine/imagemap.js} +20 -36
- package/dist/src/multiLine/index.d.ts +17 -0
- package/dist/src/multiLine/index.js +36 -0
- package/dist/src/{paramTag → multiLine}/inputbox.d.ts +1 -1
- package/dist/src/{paramTag → multiLine}/inputbox.js +2 -2
- package/dist/src/multiLine/paramTag.d.ts +20 -0
- package/dist/src/{paramTag/index.js → multiLine/paramTag.js} +10 -24
- package/dist/src/nowiki/base.d.ts +1 -1
- package/dist/src/nowiki/comment.js +2 -0
- package/dist/src/nowiki/commentLine.d.ts +11 -0
- package/dist/src/nowiki/commentLine.js +67 -0
- package/dist/src/nowiki/doubleUnderscore.d.ts +2 -1
- package/dist/src/nowiki/doubleUnderscore.js +10 -4
- package/dist/src/nowiki/listBase.js +1 -2
- package/dist/src/nowiki/noinclude.d.ts +6 -0
- package/dist/src/nowiki/noinclude.js +19 -4
- package/dist/src/nowiki/quote.js +2 -2
- package/dist/src/paramLine.d.ts +17 -0
- package/dist/src/paramLine.js +83 -0
- package/dist/src/parameter.d.ts +0 -1
- package/dist/src/parameter.js +2 -1
- package/dist/src/pre.d.ts +6 -8
- package/dist/src/pre.js +3 -2
- package/dist/src/syntax.d.ts +1 -1
- package/dist/src/table/base.d.ts +6 -1
- package/dist/src/table/base.js +96 -46
- package/dist/src/table/index.js +70 -66
- package/dist/src/table/td.d.ts +2 -2
- package/dist/src/table/td.js +8 -7
- package/dist/src/table/tr.d.ts +2 -2
- package/dist/src/table/trBase.d.ts +0 -5
- package/dist/src/table/trBase.js +4 -5
- package/dist/src/{html.d.ts → tag/html.d.ts} +6 -22
- package/dist/src/{html.js → tag/html.js} +43 -131
- package/dist/src/tag/index.d.ts +44 -0
- package/dist/src/tag/index.js +214 -0
- package/dist/src/tag/tvar.d.ts +38 -0
- package/dist/src/tag/tvar.js +169 -0
- package/dist/src/tagPair/ext.js +14 -7
- package/dist/src/tagPair/include.js +1 -1
- package/dist/src/tagPair/index.d.ts +1 -1
- package/dist/src/tagPair/index.js +1 -0
- package/dist/src/tagPair/translate.js +10 -10
- package/dist/src/transclude.d.ts +8 -9
- package/dist/src/transclude.js +8 -5
- package/dist/util/constants.js +1 -1
- package/extensions/dist/base.js +1 -1
- package/extensions/ui.css +1 -1
- package/i18n/en.json +2 -0
- package/i18n/zh-hans.json +2 -0
- package/i18n/zh-hant.json +2 -0
- package/package.json +5 -5
- package/dist/mixin/multiLine.d.ts +0 -4
- package/dist/mixin/multiLine.js +0 -33
- package/dist/src/gallery.d.ts +0 -66
- package/dist/src/imagemap.d.ts +0 -49
- package/dist/src/paramTag/index.d.ts +0 -28
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
3
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
4
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
5
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
6
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
7
|
+
var _, done = false;
|
|
8
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
9
|
+
var context = {};
|
|
10
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
11
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
12
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
13
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
14
|
+
if (kind === "accessor") {
|
|
15
|
+
if (result === void 0) continue;
|
|
16
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
17
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
18
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
19
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
20
|
+
}
|
|
21
|
+
else if (_ = accept(result)) {
|
|
22
|
+
if (kind === "field") initializers.unshift(_);
|
|
23
|
+
else descriptor[key] = _;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
27
|
+
done = true;
|
|
28
|
+
};
|
|
29
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
30
|
+
var useValue = arguments.length > 2;
|
|
31
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
32
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
33
|
+
}
|
|
34
|
+
return useValue ? value : void 0;
|
|
35
|
+
};
|
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
+
};
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.TagToken = void 0;
|
|
41
|
+
const lint_1 = require("../../util/lint");
|
|
42
|
+
const debug_1 = require("../../util/debug");
|
|
43
|
+
const index_1 = __importDefault(require("../../index"));
|
|
44
|
+
const index_2 = require("../index");
|
|
45
|
+
/* NOT FOR BROWSER */
|
|
46
|
+
const constants_1 = require("../../util/constants");
|
|
47
|
+
const fixed_1 = require("../../mixin/fixed");
|
|
48
|
+
/* NOT FOR BROWSER END */
|
|
49
|
+
/**
|
|
50
|
+
* HTML tag
|
|
51
|
+
*
|
|
52
|
+
* HTML标签
|
|
53
|
+
* @classdesc `{childNodes: [AttributesToken]}`
|
|
54
|
+
*/
|
|
55
|
+
let TagToken = (() => {
|
|
56
|
+
let _classDecorators = [fixed_1.fixedToken];
|
|
57
|
+
let _classDescriptor;
|
|
58
|
+
let _classExtraInitializers = [];
|
|
59
|
+
let _classThis;
|
|
60
|
+
let _classSuper = index_2.Token;
|
|
61
|
+
var TagToken = class extends _classSuper {
|
|
62
|
+
static { _classThis = this; }
|
|
63
|
+
static {
|
|
64
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
65
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
66
|
+
TagToken = _classThis = _classDescriptor.value;
|
|
67
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
68
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
69
|
+
}
|
|
70
|
+
#closing;
|
|
71
|
+
#tag;
|
|
72
|
+
#match;
|
|
73
|
+
/* NOT FOR BROWSER END */
|
|
74
|
+
/** whether to be a closing tag / 是否是闭合标签 */
|
|
75
|
+
get closing() {
|
|
76
|
+
return this.#closing;
|
|
77
|
+
}
|
|
78
|
+
/* NOT FOR BROWSER */
|
|
79
|
+
set closing(value) {
|
|
80
|
+
this.#closing = Boolean(value);
|
|
81
|
+
}
|
|
82
|
+
/** @private */
|
|
83
|
+
get tag() {
|
|
84
|
+
return this.#tag;
|
|
85
|
+
}
|
|
86
|
+
/** @private */
|
|
87
|
+
set tag(value) {
|
|
88
|
+
this.#tag = value;
|
|
89
|
+
}
|
|
90
|
+
/* NOT FOR BROWSER END */
|
|
91
|
+
/**
|
|
92
|
+
* @param tag 标签名
|
|
93
|
+
* @param attr 标签属性
|
|
94
|
+
* @param closing 是否闭合
|
|
95
|
+
*/
|
|
96
|
+
constructor(tag, attr, closing, config, accum) {
|
|
97
|
+
super(undefined, config, accum);
|
|
98
|
+
this.insertAt(attr);
|
|
99
|
+
this.#closing = closing;
|
|
100
|
+
this.#tag = tag;
|
|
101
|
+
}
|
|
102
|
+
/** @private */
|
|
103
|
+
toString(skip) {
|
|
104
|
+
return `<${this.#closing ? '/' : ''}${this.#tag}${super.toString(skip)}${this.selfClosing ? '/' : ''}>`;
|
|
105
|
+
}
|
|
106
|
+
/** @private */
|
|
107
|
+
text(separator = '') {
|
|
108
|
+
const { closing } = this;
|
|
109
|
+
return `<${closing && !separator ? '/' : ''}${this.#tag}${closing ? '' : super.text()}${separator}>`;
|
|
110
|
+
}
|
|
111
|
+
/** @private */
|
|
112
|
+
getAttribute(key) {
|
|
113
|
+
return key === 'padding'
|
|
114
|
+
? this.#tag.length + (this.#closing ? 2 : 1)
|
|
115
|
+
: super.getAttribute(key);
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Find the matching tag
|
|
119
|
+
*
|
|
120
|
+
* 搜索匹配的标签
|
|
121
|
+
*/
|
|
122
|
+
findMatchingTag() {
|
|
123
|
+
LINT: return (0, lint_1.cache)(// eslint-disable-line no-unused-labels
|
|
124
|
+
this.#match, () => {
|
|
125
|
+
const { type, name, parentNode, closing, selfClosing,
|
|
126
|
+
/* NOT FOR BROWSER */
|
|
127
|
+
legacy, } = this;
|
|
128
|
+
let isVoid = false, isFlexible = false;
|
|
129
|
+
if (type === 'html') {
|
|
130
|
+
const { html: [, flexibleTags, voidTags] } = this.getAttribute('config');
|
|
131
|
+
isVoid = voidTags.includes(name);
|
|
132
|
+
isFlexible = flexibleTags.includes(name);
|
|
133
|
+
}
|
|
134
|
+
if (isVoid || isFlexible && selfClosing) { // 自封闭标签
|
|
135
|
+
return this;
|
|
136
|
+
}
|
|
137
|
+
else /* istanbul ignore if */ if (!parentNode) {
|
|
138
|
+
return undefined;
|
|
139
|
+
}
|
|
140
|
+
const { childNodes } = parentNode, i = childNodes.indexOf(this), siblings = closing ? childNodes.slice(0, i).reverse() : childNodes.slice(i + 1), stack = [this], { rev } = debug_1.Shadow;
|
|
141
|
+
for (const token of siblings) {
|
|
142
|
+
if (!token.is(type)
|
|
143
|
+
|| type === 'html' && (token.name !== name || isFlexible && token.selfClosing)
|
|
144
|
+
|| type === 'tvar' && token.legacy !== legacy) {
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
else if (token.#closing === closing) {
|
|
148
|
+
/* istanbul ignore if */
|
|
149
|
+
if (type === 'tvar') {
|
|
150
|
+
return undefined;
|
|
151
|
+
}
|
|
152
|
+
stack.push(token);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
const top = stack.pop();
|
|
156
|
+
if (top === this) {
|
|
157
|
+
return token;
|
|
158
|
+
}
|
|
159
|
+
if (index_1.default.viewOnly) {
|
|
160
|
+
top.#match = [rev, token];
|
|
161
|
+
token.#match = [rev, top];
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
if (index_1.default.viewOnly) {
|
|
166
|
+
for (const token of stack) {
|
|
167
|
+
token.#match = [rev, undefined];
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return undefined;
|
|
171
|
+
}, value => {
|
|
172
|
+
this.#match = value;
|
|
173
|
+
if (value[1] && value[1] !== this) {
|
|
174
|
+
value[1].#match = [debug_1.Shadow.rev, this];
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
/** @private */
|
|
179
|
+
print() {
|
|
180
|
+
return super.print({
|
|
181
|
+
pre: `<${this.#closing ? '/' : ''}${this.#tag}`,
|
|
182
|
+
post: `${this.selfClosing ? '/' : ''}>`,
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
/** @private */
|
|
186
|
+
json(_, start = this.getAbsoluteIndex()) {
|
|
187
|
+
LSP: { // eslint-disable-line no-unused-labels
|
|
188
|
+
const json = super.json(undefined, start);
|
|
189
|
+
json['closing'] = this.#closing;
|
|
190
|
+
return json;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/* NOT FOR BROWSER */
|
|
194
|
+
/**
|
|
195
|
+
* Get the range of the tag pair
|
|
196
|
+
*
|
|
197
|
+
* 获取标签对的范围
|
|
198
|
+
* @since v1.23.0
|
|
199
|
+
*/
|
|
200
|
+
getRange() {
|
|
201
|
+
const matched = this.findMatchingTag();
|
|
202
|
+
if (!matched || matched === this) {
|
|
203
|
+
return undefined;
|
|
204
|
+
}
|
|
205
|
+
const { closing } = this, range = this.createRange();
|
|
206
|
+
range.setStartAfter(closing ? matched : this);
|
|
207
|
+
range.setEndBefore(closing ? this : matched);
|
|
208
|
+
return range;
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
return TagToken = _classThis;
|
|
212
|
+
})();
|
|
213
|
+
exports.TagToken = TagToken;
|
|
214
|
+
constants_1.classes['TagToken'] = __filename;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { TagToken } from './index';
|
|
2
|
+
import { SyntaxToken } from '../syntax';
|
|
3
|
+
import type { Config } from '../../base';
|
|
4
|
+
import type { Token } from '../../internal';
|
|
5
|
+
/**
|
|
6
|
+
* `<tvar>`
|
|
7
|
+
* @classdesc `{childNodes: [SyntaxToken]}`
|
|
8
|
+
*/
|
|
9
|
+
export declare abstract class TvarToken extends TagToken {
|
|
10
|
+
#private;
|
|
11
|
+
readonly childNodes: readonly [SyntaxToken];
|
|
12
|
+
abstract get firstChild(): SyntaxToken;
|
|
13
|
+
abstract get lastChild(): SyntaxToken;
|
|
14
|
+
abstract get children(): [SyntaxToken];
|
|
15
|
+
abstract get firstElementChild(): SyntaxToken;
|
|
16
|
+
abstract get lastElementChild(): SyntaxToken;
|
|
17
|
+
get type(): 'tvar';
|
|
18
|
+
/** whether to use the legacy syntax / 是否使用旧语法 */
|
|
19
|
+
get legacy(): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* @param tag 标签名
|
|
22
|
+
* @param attr 标签属性
|
|
23
|
+
* @param closing 是否闭合
|
|
24
|
+
*/
|
|
25
|
+
constructor(tag: string, attr: string, closing: boolean, config?: Config, accum?: Token[]);
|
|
26
|
+
afterBuild(): void;
|
|
27
|
+
cloneNode(): this;
|
|
28
|
+
/**
|
|
29
|
+
* Set the tvar name.
|
|
30
|
+
*
|
|
31
|
+
* 设置tvar变量名。
|
|
32
|
+
* @param name name / 变量名
|
|
33
|
+
* @since v1.28.0
|
|
34
|
+
* @throws `Error` 闭合标签
|
|
35
|
+
* @throws `SyntaxError` 同时包含单引号和双引号
|
|
36
|
+
*/
|
|
37
|
+
setName(name: string): void;
|
|
38
|
+
}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
3
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
4
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
5
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
6
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
7
|
+
var _, done = false;
|
|
8
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
9
|
+
var context = {};
|
|
10
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
11
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
12
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
13
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
14
|
+
if (kind === "accessor") {
|
|
15
|
+
if (result === void 0) continue;
|
|
16
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
17
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
18
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
19
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
20
|
+
}
|
|
21
|
+
else if (_ = accept(result)) {
|
|
22
|
+
if (kind === "field") initializers.unshift(_);
|
|
23
|
+
else descriptor[key] = _;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
27
|
+
done = true;
|
|
28
|
+
};
|
|
29
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
30
|
+
var useValue = arguments.length > 2;
|
|
31
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
32
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
33
|
+
}
|
|
34
|
+
return useValue ? value : void 0;
|
|
35
|
+
};
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.TvarToken = void 0;
|
|
38
|
+
const hidden_1 = require("../../mixin/hidden");
|
|
39
|
+
const index_1 = require("./index");
|
|
40
|
+
const syntax_1 = require("../syntax");
|
|
41
|
+
/* NOT FOR BROWSER */
|
|
42
|
+
const constants_1 = require("../../util/constants");
|
|
43
|
+
const debug_1 = require("../../util/debug");
|
|
44
|
+
const legacyPattern = /^\|([^>]+)$/u, newPattern = /^\s+name\s*=(?:\s*(?:(["'])([\s\S]*?)\1|([^"'\s>]+)))?\s*$/iu, legacyClosingPattern = /^$/u, newClosingPattern = /^\s*$/u;
|
|
45
|
+
/* NOT FOR BROWSER END */
|
|
46
|
+
/**
|
|
47
|
+
* `<tvar>`
|
|
48
|
+
* @classdesc `{childNodes: [SyntaxToken]}`
|
|
49
|
+
*/
|
|
50
|
+
let TvarToken = (() => {
|
|
51
|
+
let _classDecorators = [(0, hidden_1.hiddenToken)()];
|
|
52
|
+
let _classDescriptor;
|
|
53
|
+
let _classExtraInitializers = [];
|
|
54
|
+
let _classThis;
|
|
55
|
+
let _classSuper = index_1.TagToken;
|
|
56
|
+
var TvarToken = class extends _classSuper {
|
|
57
|
+
static { _classThis = this; }
|
|
58
|
+
static {
|
|
59
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
60
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
61
|
+
TvarToken = _classThis = _classDescriptor.value;
|
|
62
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
63
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
64
|
+
}
|
|
65
|
+
/* NOT FOR BROWSER END */
|
|
66
|
+
get type() {
|
|
67
|
+
return 'tvar';
|
|
68
|
+
}
|
|
69
|
+
/* NOT FOR BROWSER */
|
|
70
|
+
/** @private */
|
|
71
|
+
get closing() {
|
|
72
|
+
return super.closing;
|
|
73
|
+
}
|
|
74
|
+
/** whether to use the legacy syntax / 是否使用旧语法 */
|
|
75
|
+
get legacy() {
|
|
76
|
+
const { pattern } = this.firstChild;
|
|
77
|
+
return pattern === legacyPattern || pattern === legacyClosingPattern;
|
|
78
|
+
}
|
|
79
|
+
/* NOT FOR BROWSER END */
|
|
80
|
+
/**
|
|
81
|
+
* @param tag 标签名
|
|
82
|
+
* @param attr 标签属性
|
|
83
|
+
* @param closing 是否闭合
|
|
84
|
+
*/
|
|
85
|
+
constructor(tag, attr, closing, config, accum) {
|
|
86
|
+
/* NOT FOR BROWSER */
|
|
87
|
+
let pattern;
|
|
88
|
+
if (closing) {
|
|
89
|
+
pattern = tag ? newClosingPattern : legacyClosingPattern;
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
pattern = legacyPattern.test(attr) ? legacyPattern : newPattern;
|
|
93
|
+
}
|
|
94
|
+
/* NOT FOR BROWSER END */
|
|
95
|
+
const attrToken = new syntax_1.SyntaxToken(attr, pattern, 'tvar-name', config, accum, { AstText: ':' });
|
|
96
|
+
super(tag, attrToken, closing, config, accum);
|
|
97
|
+
/* NOT FOR BROWSER */
|
|
98
|
+
if (!closing) {
|
|
99
|
+
this.#setName(attr, pattern);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/* NOT FOR BROWSER */
|
|
103
|
+
/**
|
|
104
|
+
* 设置name
|
|
105
|
+
* @param attr 标签属性
|
|
106
|
+
* @param pattern 标签属性模式
|
|
107
|
+
*/
|
|
108
|
+
#setName(attr, pattern) {
|
|
109
|
+
let name;
|
|
110
|
+
if (pattern === legacyPattern) {
|
|
111
|
+
[, name] = legacyPattern.exec(attr);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
const mt = newPattern.exec(attr);
|
|
115
|
+
name = mt[2] ?? mt[3];
|
|
116
|
+
}
|
|
117
|
+
this.setAttribute('name', name);
|
|
118
|
+
}
|
|
119
|
+
afterBuild() {
|
|
120
|
+
super.afterBuild();
|
|
121
|
+
if (!this.closing) {
|
|
122
|
+
const /** @implements */ tvarListener = ({ prevTarget }) => {
|
|
123
|
+
const { firstChild } = this;
|
|
124
|
+
if (prevTarget === firstChild) {
|
|
125
|
+
const { pattern } = firstChild, attr = firstChild.toString();
|
|
126
|
+
if (pattern.test(attr)) {
|
|
127
|
+
this.#setName(attr, pattern);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
this.addEventListener(['remove', 'insert', 'replace', 'text'], tvarListener);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
cloneNode() {
|
|
135
|
+
const config = this.getAttribute('config');
|
|
136
|
+
// @ts-expect-error abstract class
|
|
137
|
+
return debug_1.Shadow.run(() => new TvarToken(this.tag, this.firstChild.toString(), this.closing, config));
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Set the tvar name.
|
|
141
|
+
*
|
|
142
|
+
* 设置tvar变量名。
|
|
143
|
+
* @param name name / 变量名
|
|
144
|
+
* @since v1.28.0
|
|
145
|
+
* @throws `Error` 闭合标签
|
|
146
|
+
* @throws `SyntaxError` 同时包含单引号和双引号
|
|
147
|
+
*/
|
|
148
|
+
setName(name) {
|
|
149
|
+
const { closing, firstChild } = this;
|
|
150
|
+
/* istanbul ignore if */
|
|
151
|
+
if (closing) {
|
|
152
|
+
throw new Error('Cannot set name of a closing tvar tag');
|
|
153
|
+
}
|
|
154
|
+
else if (firstChild.pattern === legacyPattern) {
|
|
155
|
+
firstChild.replaceChildren(`|${name}`);
|
|
156
|
+
}
|
|
157
|
+
else /* istanbul ignore if */ if (name.includes('"') && name.includes("'")) {
|
|
158
|
+
throw new SyntaxError('Tvar name cannot contain both single and double quotes');
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
const quote = name.includes('"') ? "'" : '"';
|
|
162
|
+
firstChild.replaceChildren(` name=${quote}${name}${quote}`);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
return TvarToken = _classThis;
|
|
167
|
+
})();
|
|
168
|
+
exports.TvarToken = TvarToken;
|
|
169
|
+
constants_1.classes['TvarToken'] = __filename;
|
package/dist/src/tagPair/ext.js
CHANGED
|
@@ -122,13 +122,13 @@ let ExtToken = (() => {
|
|
|
122
122
|
break;
|
|
123
123
|
}
|
|
124
124
|
case 'dynamicpagelist': {
|
|
125
|
-
const { ParamTagToken } = require('../paramTag
|
|
125
|
+
const { ParamTagToken } = require('../multiLine/paramTag');
|
|
126
126
|
// @ts-expect-error abstract class
|
|
127
127
|
innerToken = new ParamTagToken(include, inner, newConfig, accum);
|
|
128
128
|
break;
|
|
129
129
|
}
|
|
130
130
|
case 'inputbox': {
|
|
131
|
-
const { InputboxToken } = require('../
|
|
131
|
+
const { InputboxToken } = require('../multiLine/inputbox');
|
|
132
132
|
// @ts-expect-error abstract class
|
|
133
133
|
innerToken = new InputboxToken(include, inner, newConfig, accum);
|
|
134
134
|
break;
|
|
@@ -156,13 +156,13 @@ let ExtToken = (() => {
|
|
|
156
156
|
break;
|
|
157
157
|
}
|
|
158
158
|
case 'gallery': {
|
|
159
|
-
const { GalleryToken } = require('../gallery');
|
|
159
|
+
const { GalleryToken } = require('../multiLine/gallery');
|
|
160
160
|
// @ts-expect-error abstract class
|
|
161
161
|
innerToken = new GalleryToken(inner, newConfig, accum);
|
|
162
162
|
break;
|
|
163
163
|
}
|
|
164
164
|
case 'imagemap': {
|
|
165
|
-
const { ImagemapToken } = require('../imagemap');
|
|
165
|
+
const { ImagemapToken } = require('../multiLine/imagemap');
|
|
166
166
|
// @ts-expect-error abstract class
|
|
167
167
|
innerToken = new ImagemapToken(inner, newConfig, accum);
|
|
168
168
|
break;
|
|
@@ -206,9 +206,16 @@ let ExtToken = (() => {
|
|
|
206
206
|
errors.push((0, lint_1.generateForSelf)(this, rect, rule, 'ext-in-html', severity));
|
|
207
207
|
}
|
|
208
208
|
}
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
209
|
+
if (this.name === 'ref') {
|
|
210
|
+
let rule = 'var-anchor', s = lintConfig.getSeverity(rule, 'ref');
|
|
211
|
+
if (s && this.closest('heading-title')) {
|
|
212
|
+
errors.push((0, lint_1.generateForSelf)(this, rect, rule, 'variable-anchor', s));
|
|
213
|
+
}
|
|
214
|
+
rule = 'nested-link';
|
|
215
|
+
s = lintConfig.getSeverity(rule, 'ref');
|
|
216
|
+
if (s && this.closest('link,ext-link-text')) {
|
|
217
|
+
errors.push((0, lint_1.generateForSelf)(this, rect, rule, 'ref-in-link', s));
|
|
218
|
+
}
|
|
212
219
|
}
|
|
213
220
|
return errors;
|
|
214
221
|
}
|
|
@@ -95,6 +95,7 @@ let TagPairToken = (() => {
|
|
|
95
95
|
/* NOT FOR BROWSER */
|
|
96
96
|
nextSibling, name, closed, type, } = this, [opening, closing] = this.#tags;
|
|
97
97
|
/* NOT FOR BROWSER */
|
|
98
|
+
/* istanbul ignore next */
|
|
98
99
|
if (!closed && nextSibling && type === 'include') {
|
|
99
100
|
index_2.default.error(`Auto-closing <${name}>`, lastChild);
|
|
100
101
|
this.closed = true;
|
|
@@ -38,7 +38,7 @@ exports.TranslateToken = void 0;
|
|
|
38
38
|
const index_1 = require("../index");
|
|
39
39
|
const index_2 = require("./index");
|
|
40
40
|
const syntax_1 = require("../syntax");
|
|
41
|
-
const
|
|
41
|
+
const tvar_1 = require("../tag/tvar");
|
|
42
42
|
/* NOT FOR BROWSER */
|
|
43
43
|
const debug_1 = require("../../util/debug");
|
|
44
44
|
const constants_1 = require("../../util/constants");
|
|
@@ -70,18 +70,18 @@ let TranslateToken = (() => {
|
|
|
70
70
|
*/
|
|
71
71
|
constructor(attr, inner, config, accum = []) {
|
|
72
72
|
const attrToken = new syntax_1.SyntaxToken(attr, /^(?: nowrap)?$/u, 'translate-attr', config, accum, { AstText: ':' });
|
|
73
|
-
inner = inner?.replace(
|
|
73
|
+
inner = inner?.replace(/<tvar(\|[^>]+)>([\s\S]*?)<\/>/gu, (_, p1, p2) => {
|
|
74
74
|
// @ts-expect-error abstract class
|
|
75
|
-
new
|
|
75
|
+
new tvar_1.TvarToken('tvar', p1, false, config, accum);
|
|
76
76
|
// @ts-expect-error abstract class
|
|
77
|
-
new
|
|
78
|
-
return `\0${accum.length -
|
|
79
|
-
}).replace(
|
|
77
|
+
new tvar_1.TvarToken('', '', true, config, accum);
|
|
78
|
+
return `\0${accum.length - 2}n\x7F${p2}\0${accum.length}n\x7F`;
|
|
79
|
+
}).replace(/<(tvar)(\s+name\s*=(?:\s*(?:(["'])[\s\S]*?\3|[^"'\s>]+))?\s*)>([\s\S]*?)<\/(tvar)(\s*)>/giu, (_, p1, p2, __, p3, p4, p5) => {
|
|
80
80
|
// @ts-expect-error abstract class
|
|
81
|
-
new
|
|
81
|
+
new tvar_1.TvarToken(p1, p2, false, config, accum);
|
|
82
82
|
// @ts-expect-error abstract class
|
|
83
|
-
new
|
|
84
|
-
return `\0${accum.length -
|
|
83
|
+
new tvar_1.TvarToken(p4, p5, true, config, accum);
|
|
84
|
+
return `\0${accum.length - 2}n\x7F${p3}\0${accum.length}n\x7F`;
|
|
85
85
|
});
|
|
86
86
|
const innerToken = new index_1.Token(inner, config, accum);
|
|
87
87
|
innerToken.type = 'translate-inner';
|
|
@@ -119,7 +119,7 @@ let TranslateToken = (() => {
|
|
|
119
119
|
* @param nowrap 是否nowrap
|
|
120
120
|
*/
|
|
121
121
|
#setNowrap(nowrap) {
|
|
122
|
-
this.firstChild.
|
|
122
|
+
this.firstChild.replaceChildren(nowrap ? ' nowrap' : '');
|
|
123
123
|
}
|
|
124
124
|
/** @implements */
|
|
125
125
|
getAttr(key) {
|
package/dist/src/transclude.d.ts
CHANGED
|
@@ -8,7 +8,6 @@ declare interface Frame {
|
|
|
8
8
|
parent?: Frame | undefined;
|
|
9
9
|
title: string;
|
|
10
10
|
}
|
|
11
|
-
declare type Child = AtomToken | SyntaxToken;
|
|
12
11
|
/**
|
|
13
12
|
* template or magic word
|
|
14
13
|
*
|
|
@@ -19,12 +18,12 @@ export declare abstract class TranscludeToken extends Token {
|
|
|
19
18
|
#private;
|
|
20
19
|
readonly modifier: string;
|
|
21
20
|
readonly name: string;
|
|
22
|
-
readonly childNodes: readonly [
|
|
23
|
-
abstract get firstChild():
|
|
24
|
-
abstract get lastChild():
|
|
25
|
-
abstract get children(): [
|
|
26
|
-
abstract get firstElementChild():
|
|
27
|
-
abstract get lastElementChild():
|
|
21
|
+
readonly childNodes: readonly [AtomToken | SyntaxToken, ...ParameterToken[]] | readonly [SyntaxToken, AtomToken, AtomToken, ...ParameterToken[]];
|
|
22
|
+
abstract get firstChild(): AtomToken | SyntaxToken;
|
|
23
|
+
abstract get lastChild(): AtomToken | SyntaxToken | ParameterToken;
|
|
24
|
+
abstract get children(): [AtomToken | SyntaxToken, ...ParameterToken[]] | [SyntaxToken, AtomToken, AtomToken, ...ParameterToken[]];
|
|
25
|
+
abstract get firstElementChild(): AtomToken | SyntaxToken;
|
|
26
|
+
abstract get lastElementChild(): AtomToken | SyntaxToken | ParameterToken;
|
|
28
27
|
get type(): 'template' | 'magic-word';
|
|
29
28
|
/**
|
|
30
29
|
* module name
|
|
@@ -246,8 +245,8 @@ export declare abstract class TranscludeToken extends Token {
|
|
|
246
245
|
* Get the module name and module function name
|
|
247
246
|
*
|
|
248
247
|
* 获取模块名和模块函数名
|
|
249
|
-
* @throws `Error` 仅用于模块
|
|
250
248
|
* @since v1.16.4
|
|
249
|
+
* @throws `Error` 仅用于模块
|
|
251
250
|
*/
|
|
252
251
|
getModule(): [string, string | undefined];
|
|
253
252
|
/**
|
|
@@ -255,8 +254,8 @@ export declare abstract class TranscludeToken extends Token {
|
|
|
255
254
|
*
|
|
256
255
|
* 获取 [frame 对象](https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#frame-object)
|
|
257
256
|
* @param context template calling this module / 调用该模块的模板
|
|
258
|
-
* @throws `Error` 仅用于模块
|
|
259
257
|
* @since v1.22.0
|
|
258
|
+
* @throws `Error` 仅用于模块
|
|
260
259
|
*/
|
|
261
260
|
getFrame(context?: this): Frame;
|
|
262
261
|
}
|
package/dist/src/transclude.js
CHANGED
|
@@ -53,6 +53,7 @@ const syntax_1 = require("./syntax");
|
|
|
53
53
|
/* NOT FOR BROWSER */
|
|
54
54
|
const cached_1 = require("../mixin/cached");
|
|
55
55
|
const basicMagicWords = new Map([['=', '='], ['!', '|']]);
|
|
56
|
+
/* NOT FOR BROWSER END */
|
|
56
57
|
/**
|
|
57
58
|
* template or magic word
|
|
58
59
|
*
|
|
@@ -495,10 +496,12 @@ let TranscludeToken = (() => {
|
|
|
495
496
|
* @throws `Error` 仅用于模板
|
|
496
497
|
*/
|
|
497
498
|
getDuplicatedArgs() {
|
|
498
|
-
|
|
499
|
-
|
|
499
|
+
LINT: { // eslint-disable-line no-unused-labels
|
|
500
|
+
if (this.isTemplate()) {
|
|
501
|
+
return [...this.#args].filter(([, { size }]) => size > 1).map(([key, args]) => [key, [...args]]);
|
|
502
|
+
}
|
|
503
|
+
throw new Error('TranscludeToken.getDuplicatedArgs method is only for template!');
|
|
500
504
|
}
|
|
501
|
-
throw new Error('TranscludeToken.getDuplicatedArgs method is only for template!');
|
|
502
505
|
}
|
|
503
506
|
/**
|
|
504
507
|
* Get possible values of some magic words
|
|
@@ -795,8 +798,8 @@ let TranscludeToken = (() => {
|
|
|
795
798
|
* Get the module name and module function name
|
|
796
799
|
*
|
|
797
800
|
* 获取模块名和模块函数名
|
|
798
|
-
* @throws `Error` 仅用于模块
|
|
799
801
|
* @since v1.16.4
|
|
802
|
+
* @throws `Error` 仅用于模块
|
|
800
803
|
*/
|
|
801
804
|
getModule() {
|
|
802
805
|
/* istanbul ignore if */
|
|
@@ -810,8 +813,8 @@ let TranscludeToken = (() => {
|
|
|
810
813
|
*
|
|
811
814
|
* 获取 [frame 对象](https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#frame-object)
|
|
812
815
|
* @param context template calling this module / 调用该模块的模板
|
|
813
|
-
* @throws `Error` 仅用于模块
|
|
814
816
|
* @since v1.22.0
|
|
817
|
+
* @throws `Error` 仅用于模块
|
|
815
818
|
*/
|
|
816
819
|
getFrame(context) {
|
|
817
820
|
/* istanbul ignore if */
|
package/dist/util/constants.js
CHANGED
|
@@ -15,7 +15,7 @@ exports.enMsg = (() => require('../../i18n/en.json'))();
|
|
|
15
15
|
exports.classes = {}, exports.mixins = exports.classes, exports.parsers = exports.classes;
|
|
16
16
|
exports.aliases = [
|
|
17
17
|
['AstText'],
|
|
18
|
-
['CommentToken', 'ExtToken', 'IncludeToken', 'NoincludeToken'],
|
|
18
|
+
['CommentToken', 'ExtToken', 'IncludeToken', 'NoincludeToken', 'TranslateToken'],
|
|
19
19
|
['ArgToken', 'TranscludeToken', 'HeadingToken'],
|
|
20
20
|
['HtmlToken'],
|
|
21
21
|
['TableToken'],
|
package/extensions/dist/base.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
(() => {
|
|
2
2
|
var _a;
|
|
3
|
-
const version = '1.
|
|
3
|
+
const version = '1.28.1', src = (_a = document.currentScript) === null || _a === void 0 ? void 0 : _a.src, file = /\/extensions\/dist\/base\.(?:min\.)?js$/u, CDN = src && file.test(src)
|
|
4
4
|
? src.replace(file, '')
|
|
5
5
|
: `https://testingcf.jsdelivr.net/npm/wikiparser-node@${version}`;
|
|
6
6
|
const workerJS = () => {
|