wikiparser-node 1.19.0 → 1.20.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/README.md +3 -0
- package/bundle/bundle-es7.min.js +25 -32
- package/bundle/bundle-lsp.min.js +24 -97
- package/bundle/bundle.min.js +26 -33
- package/config/default.json +49 -3
- package/config/minimum.json +5 -1
- package/data/ext/math.json +660 -0
- package/dist/addon/table.js +24 -5
- package/dist/addon/transclude.js +4 -4
- package/dist/base.d.mts +1 -1
- package/dist/base.d.ts +1 -1
- package/dist/bin/config.js +26 -8
- package/dist/index.js +10 -1
- package/dist/internal.d.ts +2 -0
- package/dist/lib/document.d.ts +6 -1
- package/dist/lib/document.js +21 -5
- package/dist/lib/element.js +15 -21
- package/dist/lib/lsp.js +88 -59
- package/dist/lib/node.d.ts +4 -4
- package/dist/lib/node.js +21 -24
- package/dist/lib/text.js +13 -14
- package/dist/lib/title.js +2 -1
- package/dist/mixin/attributesParent.js +1 -1
- package/dist/mixin/fixed.d.ts +1 -2
- package/dist/mixin/fixed.js +2 -3
- package/dist/mixin/gapped.d.ts +4 -0
- package/dist/mixin/gapped.js +24 -0
- package/dist/mixin/hidden.js +1 -1
- package/dist/mixin/multiLine.d.ts +4 -0
- package/dist/mixin/multiLine.js +33 -0
- package/dist/mixin/noEscape.js +1 -1
- package/dist/mixin/padded.d.ts +5 -0
- package/dist/mixin/padded.js +24 -0
- package/dist/mixin/singleLine.js +1 -1
- package/dist/mixin/sol.js +1 -1
- package/dist/mixin/syntax.js +3 -3
- package/dist/parser/braces.js +8 -12
- package/dist/parser/commentAndExt.js +18 -2
- package/dist/parser/magicLinks.js +2 -2
- package/dist/parser/quotes.js +0 -4
- package/dist/parser/selector.js +5 -2
- package/dist/src/arg.js +10 -13
- package/dist/src/atom.js +2 -7
- package/dist/src/attribute.js +6 -6
- package/dist/src/attributes.js +10 -14
- package/dist/src/commented.d.ts +26 -0
- package/dist/src/commented.js +52 -0
- package/dist/src/converter.js +3 -6
- package/dist/src/converterFlags.js +266 -223
- package/dist/src/converterRule.d.ts +2 -2
- package/dist/src/converterRule.js +2 -2
- package/dist/src/extLink.d.ts +2 -3
- package/dist/src/extLink.js +222 -175
- package/dist/src/gallery.d.ts +4 -5
- package/dist/src/gallery.js +179 -144
- package/dist/src/heading.js +11 -11
- package/dist/src/hidden.js +2 -7
- package/dist/src/imageParameter.d.ts +2 -2
- package/dist/src/imageParameter.js +6 -5
- package/dist/src/imagemap.d.ts +2 -2
- package/dist/src/imagemap.js +155 -123
- package/dist/src/imagemapLink.d.ts +2 -2
- package/dist/src/index.js +44 -20
- package/dist/src/link/base.d.ts +2 -3
- package/dist/src/link/base.js +13 -15
- package/dist/src/link/file.d.ts +2 -3
- package/dist/src/link/file.js +3 -3
- package/dist/src/link/galleryImage.d.ts +2 -3
- package/dist/src/link/galleryImage.js +7 -13
- package/dist/src/link/redirectTarget.js +1 -1
- package/dist/src/magicLink.js +7 -9
- package/dist/src/nested.d.ts +2 -2
- package/dist/src/nested.js +4 -7
- package/dist/src/nowiki/comment.d.ts +1 -1
- package/dist/src/nowiki/comment.js +2 -5
- package/dist/src/nowiki/doubleUnderscore.d.ts +1 -1
- package/dist/src/nowiki/doubleUnderscore.js +2 -5
- package/dist/src/nowiki/index.d.ts +2 -2
- package/dist/src/nowiki/index.js +2 -1
- package/dist/src/nowiki/quote.d.ts +3 -3
- package/dist/src/nowiki/quote.js +13 -12
- package/dist/src/onlyinclude.js +6 -13
- package/dist/src/paramTag/index.d.ts +2 -2
- package/dist/src/paramTag/index.js +102 -66
- package/dist/src/paramTag/inputbox.d.ts +1 -1
- package/dist/src/parameter.d.ts +4 -5
- package/dist/src/parameter.js +13 -13
- package/dist/src/pre.d.ts +4 -5
- package/dist/src/pre.js +8 -17
- package/dist/src/syntax.d.ts +1 -1
- package/dist/src/syntax.js +2 -7
- package/dist/src/table/base.d.ts +2 -2
- package/dist/src/table/base.js +8 -8
- package/dist/src/table/index.js +1 -1
- package/dist/src/table/td.d.ts +3 -3
- package/dist/src/table/td.js +9 -9
- package/dist/src/table/tr.d.ts +2 -2
- package/dist/src/tagPair/ext.js +35 -30
- package/dist/src/tagPair/index.d.ts +1 -1
- package/dist/src/tagPair/index.js +2 -5
- package/dist/src/tagPair/translate.d.ts +38 -0
- package/dist/src/tagPair/translate.js +129 -0
- package/dist/src/transclude.js +5 -6
- package/dist/util/html.js +16 -1
- package/dist/util/lint.js +17 -30
- package/dist/util/sharable.js +29 -1
- package/dist/util/sharable.mjs +31 -3
- package/dist/util/string.js +14 -1
- package/extensions/dist/base.js +1 -1
- package/extensions/dist/lsp.js +13 -2
- package/package.json +7 -6
- package/extensions/es7/base.js +0 -320
- package/extensions/es7/lint.js +0 -97
|
@@ -1,13 +1,49 @@
|
|
|
1
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
|
+
};
|
|
2
36
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
37
|
exports.ConverterFlagsToken = void 0;
|
|
4
38
|
const lint_1 = require("../util/lint");
|
|
5
39
|
const rect_1 = require("../lib/rect");
|
|
40
|
+
const gapped_1 = require("../mixin/gapped");
|
|
6
41
|
const index_1 = require("./index");
|
|
7
42
|
const atom_1 = require("./atom");
|
|
8
43
|
/* NOT FOR BROWSER */
|
|
9
44
|
const debug_1 = require("../util/debug");
|
|
10
45
|
const constants_1 = require("../util/constants");
|
|
46
|
+
const html_1 = require("../util/html");
|
|
11
47
|
/* NOT FOR BROWSER END */
|
|
12
48
|
const definedFlags = new Set(['A', 'T', 'R', 'D', '-', 'H', 'N']);
|
|
13
49
|
/**
|
|
@@ -16,249 +52,256 @@ const definedFlags = new Set(['A', 'T', 'R', 'D', '-', 'H', 'N']);
|
|
|
16
52
|
* 转换flags
|
|
17
53
|
* @classdesc `{childNodes: AtomToken[]}`
|
|
18
54
|
*/
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
55
|
+
let ConverterFlagsToken = (() => {
|
|
56
|
+
let _classDecorators = [(0, gapped_1.gapped)()];
|
|
57
|
+
let _classDescriptor;
|
|
58
|
+
let _classExtraInitializers = [];
|
|
59
|
+
let _classThis;
|
|
60
|
+
let _classSuper = index_1.Token;
|
|
61
|
+
var ConverterFlagsToken = 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
|
+
ConverterFlagsToken = _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
|
+
#flags;
|
|
71
|
+
/* NOT FOR BROWSER END */
|
|
72
|
+
get type() {
|
|
73
|
+
return 'converter-flags';
|
|
34
74
|
}
|
|
35
|
-
}
|
|
36
|
-
/* NOT FOR BROWSER END */
|
|
37
|
-
/** @param flags 转换类型标记 */
|
|
38
|
-
constructor(flags, config, accum = []) {
|
|
39
|
-
super(undefined, config, accum, {
|
|
40
|
-
AtomToken: ':',
|
|
41
|
-
});
|
|
42
|
-
this.append(...flags.map(flag => new atom_1.AtomToken(flag, 'converter-flag', config, accum)));
|
|
43
|
-
}
|
|
44
|
-
/** @private */
|
|
45
|
-
afterBuild() {
|
|
46
|
-
this.#flags = this.childNodes.map(child => child.text().trim());
|
|
47
|
-
super.afterBuild();
|
|
48
75
|
/* NOT FOR BROWSER */
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
76
|
+
/** all language conversion flags / 所有转换类型标记 */
|
|
77
|
+
get flags() {
|
|
78
|
+
return this.getAllFlags();
|
|
79
|
+
}
|
|
80
|
+
set flags(value) {
|
|
81
|
+
this.replaceChildren();
|
|
82
|
+
for (const flag of value) {
|
|
83
|
+
this.#newFlag(flag);
|
|
52
84
|
}
|
|
53
|
-
};
|
|
54
|
-
this.addEventListener(['remove', 'insert', 'text', 'replace'], converterFlagsListener);
|
|
55
|
-
}
|
|
56
|
-
/** @private */
|
|
57
|
-
toString(skip) {
|
|
58
|
-
return super.toString(skip, ';');
|
|
59
|
-
}
|
|
60
|
-
/** @private */
|
|
61
|
-
text() {
|
|
62
|
-
return super.text(';');
|
|
63
|
-
}
|
|
64
|
-
/** @private */
|
|
65
|
-
getGaps() {
|
|
66
|
-
return 1;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Get unknown language conversion flags
|
|
70
|
-
*
|
|
71
|
-
* 获取未知的转换类型标记
|
|
72
|
-
*/
|
|
73
|
-
getUnknownFlags() {
|
|
74
|
-
return new Set(this.#flags.filter(flag => /\{{3}[^{}]+\}{3}/u.test(flag)));
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Get language coversion flags that specify a language variant
|
|
78
|
-
*
|
|
79
|
-
* 获取指定语言变体的转换标记
|
|
80
|
-
*/
|
|
81
|
-
getVariantFlags() {
|
|
82
|
-
const variants = new Set(this.getAttribute('config').variants);
|
|
83
|
-
return new Set(this.#flags.filter(flag => variants.has(flag)));
|
|
84
|
-
}
|
|
85
|
-
/** @private */
|
|
86
|
-
lint(start = this.getAbsoluteIndex(), re) {
|
|
87
|
-
const variantFlags = this.getVariantFlags(), unknownFlags = this.getUnknownFlags(), validFlags = new Set(this.#flags.filter(flag => definedFlags.has(flag))), emptyFlagCount = this.#flags.filter(flag => !flag).length, knownFlagCount = this.#flags.length - unknownFlags.size - emptyFlagCount, errors = super.lint(start, re);
|
|
88
|
-
if (variantFlags.size === knownFlagCount || validFlags.size === knownFlagCount) {
|
|
89
|
-
return errors;
|
|
90
85
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
86
|
+
/* NOT FOR BROWSER END */
|
|
87
|
+
/** @param flags 转换类型标记 */
|
|
88
|
+
constructor(flags, config, accum = []) {
|
|
89
|
+
super(undefined, config, accum, {
|
|
90
|
+
AtomToken: ':',
|
|
91
|
+
});
|
|
92
|
+
this.safeAppend(flags.map(flag => new atom_1.AtomToken(flag, 'converter-flag', config, accum)));
|
|
93
|
+
}
|
|
94
|
+
/** @private */
|
|
95
|
+
afterBuild() {
|
|
96
|
+
this.#flags = this.childNodes.map(child => child.text().trim());
|
|
97
|
+
super.afterBuild();
|
|
98
|
+
/* NOT FOR BROWSER */
|
|
99
|
+
const /** @implements */ converterFlagsListener = ({ prevTarget }) => {
|
|
100
|
+
if (prevTarget) {
|
|
101
|
+
this.#flags[this.childNodes.indexOf(prevTarget)] = prevTarget.text().trim();
|
|
101
102
|
}
|
|
102
|
-
|
|
103
|
-
|
|
103
|
+
};
|
|
104
|
+
this.addEventListener(['remove', 'insert', 'text', 'replace'], converterFlagsListener);
|
|
105
|
+
}
|
|
106
|
+
/** @private */
|
|
107
|
+
toString(skip) {
|
|
108
|
+
return super.toString(skip, ';');
|
|
109
|
+
}
|
|
110
|
+
/** @private */
|
|
111
|
+
text() {
|
|
112
|
+
return super.text(';');
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Get unknown language conversion flags
|
|
116
|
+
*
|
|
117
|
+
* 获取未知的转换类型标记
|
|
118
|
+
*/
|
|
119
|
+
getUnknownFlags() {
|
|
120
|
+
return new Set(this.#flags.filter(flag => /\{{3}[^{}]+\}{3}/u.test(flag)));
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Get language coversion flags that specify a language variant
|
|
124
|
+
*
|
|
125
|
+
* 获取指定语言变体的转换标记
|
|
126
|
+
*/
|
|
127
|
+
getVariantFlags() {
|
|
128
|
+
const variants = new Set(this.getAttribute('config').variants);
|
|
129
|
+
return new Set(this.#flags.filter(flag => variants.has(flag)));
|
|
130
|
+
}
|
|
131
|
+
/** @private */
|
|
132
|
+
lint(start = this.getAbsoluteIndex(), re) {
|
|
133
|
+
const variantFlags = this.getVariantFlags(), unknownFlags = this.getUnknownFlags(), validFlags = new Set(this.#flags.filter(flag => definedFlags.has(flag))), emptyFlagCount = this.#flags.filter(flag => !flag).length, knownFlagCount = this.#flags.length - unknownFlags.size - emptyFlagCount, errors = super.lint(start, re);
|
|
134
|
+
if (variantFlags.size === knownFlagCount || validFlags.size === knownFlagCount) {
|
|
135
|
+
return errors;
|
|
136
|
+
}
|
|
137
|
+
const rect = new rect_1.BoundingRect(this, start);
|
|
138
|
+
for (let i = 0; i < this.length; i++) {
|
|
139
|
+
const child = this.childNodes[i], flag = child.text().trim();
|
|
140
|
+
if (flag
|
|
141
|
+
&& !variantFlags.has(flag)
|
|
142
|
+
&& !unknownFlags.has(flag)
|
|
143
|
+
&& (variantFlags.size > 0 || !validFlags.has(flag))) {
|
|
144
|
+
const e = (0, lint_1.generateForChild)(child, rect, 'no-ignored', 'invalid conversion flag');
|
|
145
|
+
if (variantFlags.size === 0 && definedFlags.has(flag.toUpperCase())) {
|
|
146
|
+
e.fix = { range: [e.startIndex, e.endIndex], text: flag.toUpperCase(), desc: 'uppercase' };
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
e.suggestions = [{ desc: 'remove', range: [e.startIndex - (i && 1), e.endIndex], text: '' }];
|
|
150
|
+
}
|
|
151
|
+
errors.push(e);
|
|
104
152
|
}
|
|
105
|
-
errors.push(e);
|
|
106
153
|
}
|
|
154
|
+
return errors;
|
|
107
155
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
print() {
|
|
112
|
-
return super.print({ sep: ';' });
|
|
113
|
-
}
|
|
114
|
-
/* NOT FOR BROWSER */
|
|
115
|
-
cloneNode() {
|
|
116
|
-
const cloned = this.cloneChildNodes();
|
|
117
|
-
return debug_1.Shadow.run(() => {
|
|
118
|
-
// @ts-expect-error abstract class
|
|
119
|
-
const token = new ConverterFlagsToken([], this.getAttribute('config'));
|
|
120
|
-
token.append(...cloned);
|
|
121
|
-
return token;
|
|
122
|
-
});
|
|
123
|
-
}
|
|
124
|
-
/**
|
|
125
|
-
* @override
|
|
126
|
-
* @param i position of the child node / 移除位置
|
|
127
|
-
*/
|
|
128
|
-
removeAt(i) {
|
|
129
|
-
const token = super.removeAt(i);
|
|
130
|
-
this.#flags?.splice(i, 1);
|
|
131
|
-
return token;
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* @override
|
|
135
|
-
* @param token node to be inserted / 待插入的子节点
|
|
136
|
-
* @param i position to be inserted at / 插入位置
|
|
137
|
-
*/
|
|
138
|
-
insertAt(token, i = this.length) {
|
|
139
|
-
super.insertAt(token, i);
|
|
140
|
-
this.#flags?.splice(i, 0, token.text().trim());
|
|
141
|
-
return token;
|
|
142
|
-
}
|
|
143
|
-
/**
|
|
144
|
-
* Get all language conversion flags
|
|
145
|
-
*
|
|
146
|
-
* 获取所有转换类型标记
|
|
147
|
-
*/
|
|
148
|
-
getAllFlags() {
|
|
149
|
-
return new Set(this.#flags);
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Get the conversion flag token
|
|
153
|
-
*
|
|
154
|
-
* 获取转换类型标记节点
|
|
155
|
-
* @param flag language conversion flag / 转换类型标记
|
|
156
|
-
*/
|
|
157
|
-
getFlagTokens(flag) {
|
|
158
|
-
return this.#flags.includes(flag) ? this.childNodes.filter(child => child.text().trim() === flag) : [];
|
|
159
|
-
}
|
|
160
|
-
/**
|
|
161
|
-
* Get effective language conversion flags
|
|
162
|
-
*
|
|
163
|
-
* 获取有效的转换类型标记
|
|
164
|
-
*/
|
|
165
|
-
getEffectiveFlags() {
|
|
166
|
-
const variantFlags = this.getVariantFlags(), unknownFlags = this.getUnknownFlags();
|
|
167
|
-
const flags = new Set([...this.#flags.filter(flag => definedFlags.has(flag)), ...unknownFlags]);
|
|
168
|
-
if (flags.size === 0 && variantFlags.size === 0) {
|
|
169
|
-
return new Set('S');
|
|
156
|
+
/** @private */
|
|
157
|
+
print() {
|
|
158
|
+
return super.print({ sep: ';' });
|
|
170
159
|
}
|
|
171
|
-
|
|
172
|
-
|
|
160
|
+
/* NOT FOR BROWSER */
|
|
161
|
+
cloneNode() {
|
|
162
|
+
// @ts-expect-error abstract class
|
|
163
|
+
return (0, html_1.cloneNode)(this, () => new ConverterFlagsToken([], this.getAttribute('config')));
|
|
173
164
|
}
|
|
174
|
-
|
|
175
|
-
|
|
165
|
+
/**
|
|
166
|
+
* @override
|
|
167
|
+
* @param i position of the child node / 移除位置
|
|
168
|
+
*/
|
|
169
|
+
removeAt(i) {
|
|
170
|
+
const token = super.removeAt(i);
|
|
171
|
+
this.#flags?.splice(i, 1);
|
|
172
|
+
return token;
|
|
176
173
|
}
|
|
177
|
-
|
|
178
|
-
|
|
174
|
+
/**
|
|
175
|
+
* @override
|
|
176
|
+
* @param token node to be inserted / 待插入的子节点
|
|
177
|
+
* @param i position to be inserted at / 插入位置
|
|
178
|
+
*/
|
|
179
|
+
insertAt(token, i = this.length) {
|
|
180
|
+
super.insertAt(token, i);
|
|
181
|
+
this.#flags?.splice(i, 0, token.text().trim());
|
|
182
|
+
return token;
|
|
179
183
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
184
|
+
/**
|
|
185
|
+
* Get all language conversion flags
|
|
186
|
+
*
|
|
187
|
+
* 获取所有转换类型标记
|
|
188
|
+
*/
|
|
189
|
+
getAllFlags() {
|
|
190
|
+
return new Set(this.#flags);
|
|
185
191
|
}
|
|
186
|
-
|
|
187
|
-
|
|
192
|
+
/**
|
|
193
|
+
* Get the conversion flag token
|
|
194
|
+
*
|
|
195
|
+
* 获取转换类型标记节点
|
|
196
|
+
* @param flag language conversion flag / 转换类型标记
|
|
197
|
+
*/
|
|
198
|
+
getFlagTokens(flag) {
|
|
199
|
+
return this.#flags.includes(flag) ? this.childNodes.filter(child => child.text().trim() === flag) : [];
|
|
188
200
|
}
|
|
189
|
-
|
|
190
|
-
|
|
201
|
+
/**
|
|
202
|
+
* Get effective language conversion flags
|
|
203
|
+
*
|
|
204
|
+
* 获取有效的转换类型标记
|
|
205
|
+
*/
|
|
206
|
+
getEffectiveFlags() {
|
|
207
|
+
const variantFlags = this.getVariantFlags(), unknownFlags = this.getUnknownFlags();
|
|
208
|
+
const flags = new Set([...this.#flags.filter(flag => definedFlags.has(flag)), ...unknownFlags]);
|
|
209
|
+
if (flags.size === 0 && variantFlags.size === 0) {
|
|
210
|
+
return new Set('S');
|
|
211
|
+
}
|
|
212
|
+
else if (flags.has('R')) {
|
|
213
|
+
return new Set('R');
|
|
214
|
+
}
|
|
215
|
+
else if (flags.has('N')) {
|
|
216
|
+
return new Set('N');
|
|
217
|
+
}
|
|
218
|
+
else if (flags.has('-')) {
|
|
219
|
+
return new Set('-');
|
|
220
|
+
}
|
|
221
|
+
else if (flags.has('H')) {
|
|
222
|
+
const hasT = flags.has('T'), hasD = flags.has('D');
|
|
223
|
+
return hasT && hasD
|
|
224
|
+
? new Set(['+', 'H', 'T', 'D'])
|
|
225
|
+
: new Set(['+', 'H', ...hasT ? ['T'] : [], ...hasD ? ['D'] : [], ...unknownFlags]);
|
|
226
|
+
}
|
|
227
|
+
else if (variantFlags.size > 0) {
|
|
228
|
+
return new Set([...variantFlags, ...unknownFlags]);
|
|
229
|
+
}
|
|
230
|
+
if (flags.size === 1 && flags.has('T')) {
|
|
231
|
+
flags.add('H');
|
|
232
|
+
}
|
|
233
|
+
if (flags.has('A')) {
|
|
234
|
+
flags.add('+');
|
|
235
|
+
flags.add('S');
|
|
236
|
+
}
|
|
237
|
+
if (flags.has('D')) {
|
|
238
|
+
flags.delete('S');
|
|
239
|
+
}
|
|
240
|
+
return flags;
|
|
191
241
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
242
|
+
/**
|
|
243
|
+
* Check if a language conversion flag is present
|
|
244
|
+
*
|
|
245
|
+
* 是否具有某转换类型标记
|
|
246
|
+
* @param flag language conversion flag / 转换类型标记
|
|
247
|
+
*/
|
|
248
|
+
hasFlag(flag) {
|
|
249
|
+
return this.#flags.includes(flag);
|
|
195
250
|
}
|
|
196
|
-
|
|
197
|
-
|
|
251
|
+
/**
|
|
252
|
+
* Check if an effective language conversion flag is present
|
|
253
|
+
*
|
|
254
|
+
* 是否具有某有效的转换类型标记
|
|
255
|
+
* @param flag language conversion flag / 转换类型标记
|
|
256
|
+
*/
|
|
257
|
+
hasEffectiveFlag(flag) {
|
|
258
|
+
return this.getEffectiveFlags().has(flag);
|
|
198
259
|
}
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Check if an effective language conversion flag is present
|
|
212
|
-
*
|
|
213
|
-
* 是否具有某有效的转换类型标记
|
|
214
|
-
* @param flag language conversion flag / 转换类型标记
|
|
215
|
-
*/
|
|
216
|
-
hasEffectiveFlag(flag) {
|
|
217
|
-
return this.getEffectiveFlags().has(flag);
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Remove a language conversion flag
|
|
221
|
-
*
|
|
222
|
-
* 移除某转换类型标记
|
|
223
|
-
* @param flag language conversion flag / 转换类型标记
|
|
224
|
-
*/
|
|
225
|
-
removeFlag(flag) {
|
|
226
|
-
for (const token of this.getFlagTokens(flag)) {
|
|
227
|
-
token.remove();
|
|
260
|
+
/**
|
|
261
|
+
* Remove a language conversion flag
|
|
262
|
+
*
|
|
263
|
+
* 移除某转换类型标记
|
|
264
|
+
* @param flag language conversion flag / 转换类型标记
|
|
265
|
+
*/
|
|
266
|
+
removeFlag(flag) {
|
|
267
|
+
for (const token of this.getFlagTokens(flag)) {
|
|
268
|
+
token.remove();
|
|
269
|
+
}
|
|
228
270
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
this.insertAt(debug_1.Shadow.run(() => new atom_1.AtomToken(flag, 'converter-flag', this.getAttribute('config'))));
|
|
236
|
-
}
|
|
237
|
-
/**
|
|
238
|
-
* Set a language conversion flag
|
|
239
|
-
*
|
|
240
|
-
* 设置转换类型标记
|
|
241
|
-
* @param flag language conversion flag / 转换类型标记
|
|
242
|
-
*/
|
|
243
|
-
setFlag(flag) {
|
|
244
|
-
if (!this.#flags.includes(flag)) {
|
|
245
|
-
this.#newFlag(flag);
|
|
271
|
+
/**
|
|
272
|
+
* 添加转换类型标记
|
|
273
|
+
* @param flag 转换类型标记
|
|
274
|
+
*/
|
|
275
|
+
#newFlag(flag) {
|
|
276
|
+
this.insertAt(debug_1.Shadow.run(() => new atom_1.AtomToken(flag, 'converter-flag', this.getAttribute('config'))));
|
|
246
277
|
}
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
278
|
+
/**
|
|
279
|
+
* Set a language conversion flag
|
|
280
|
+
*
|
|
281
|
+
* 设置转换类型标记
|
|
282
|
+
* @param flag language conversion flag / 转换类型标记
|
|
283
|
+
*/
|
|
284
|
+
setFlag(flag) {
|
|
285
|
+
if (!this.#flags.includes(flag)) {
|
|
286
|
+
this.#newFlag(flag);
|
|
287
|
+
}
|
|
257
288
|
}
|
|
258
|
-
|
|
259
|
-
|
|
289
|
+
/**
|
|
290
|
+
* Toggle a language conversion flag
|
|
291
|
+
*
|
|
292
|
+
* 开关转换类型标记
|
|
293
|
+
* @param flag language conversion flag / 转换类型标记
|
|
294
|
+
*/
|
|
295
|
+
toggleFlag(flag) {
|
|
296
|
+
if (this.#flags.includes(flag)) {
|
|
297
|
+
this.removeFlag(flag);
|
|
298
|
+
}
|
|
299
|
+
else {
|
|
300
|
+
this.#newFlag(flag);
|
|
301
|
+
}
|
|
260
302
|
}
|
|
261
|
-
}
|
|
262
|
-
|
|
303
|
+
};
|
|
304
|
+
return ConverterFlagsToken = _classThis;
|
|
305
|
+
})();
|
|
263
306
|
exports.ConverterFlagsToken = ConverterFlagsToken;
|
|
264
307
|
constants_1.classes['ConverterFlagsToken'] = __filename;
|
|
@@ -14,13 +14,13 @@ export declare abstract class ConverterRuleToken extends Token {
|
|
|
14
14
|
abstract get firstChild(): AtomToken;
|
|
15
15
|
abstract get lastChild(): AtomToken;
|
|
16
16
|
abstract get parentNode(): ConverterToken | undefined;
|
|
17
|
-
abstract get previousSibling(): ConverterFlagsToken | this;
|
|
17
|
+
abstract get previousSibling(): ConverterFlagsToken | this | undefined;
|
|
18
18
|
abstract get nextSibling(): this | undefined;
|
|
19
19
|
abstract get children(): [AtomToken] | [AtomToken, AtomToken] | [AtomToken, AtomToken, AtomToken];
|
|
20
20
|
abstract get firstElementChild(): AtomToken;
|
|
21
21
|
abstract get lastElementChild(): AtomToken;
|
|
22
22
|
abstract get parentElement(): ConverterToken | undefined;
|
|
23
|
-
abstract get previousElementSibling(): ConverterFlagsToken | this;
|
|
23
|
+
abstract get previousElementSibling(): ConverterFlagsToken | this | undefined;
|
|
24
24
|
abstract get nextElementSibling(): this | undefined;
|
|
25
25
|
get type(): 'converter-rule';
|
|
26
26
|
/** language variant / 语言变体 */
|
|
@@ -185,7 +185,7 @@ class ConverterRuleToken extends index_2.Token {
|
|
|
185
185
|
setTo(to) {
|
|
186
186
|
const { childNodes } = index_1.default
|
|
187
187
|
.parse(to, this.getAttribute('include'), undefined, this.getAttribute('config'));
|
|
188
|
-
this.lastChild.
|
|
188
|
+
this.lastChild.safeReplaceChildren(childNodes);
|
|
189
189
|
}
|
|
190
190
|
/**
|
|
191
191
|
* Set the language variant
|
|
@@ -218,7 +218,7 @@ class ConverterRuleToken extends index_2.Token {
|
|
|
218
218
|
if (!unidirectional) {
|
|
219
219
|
super.insertAt(debug_1.Shadow.run(() => new atom_1.AtomToken(undefined, 'converter-rule-from', config)), 0);
|
|
220
220
|
}
|
|
221
|
-
this.firstChild.
|
|
221
|
+
this.firstChild.safeReplaceChildren(childNodes);
|
|
222
222
|
}
|
|
223
223
|
/**
|
|
224
224
|
* Make the language conversion unidirectional
|
package/dist/src/extLink.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import Parser from '../index';
|
|
2
1
|
import { Token } from './index';
|
|
3
2
|
import { MagicLinkToken } from './magicLink';
|
|
4
|
-
import type { LintError } from '../base';
|
|
3
|
+
import type { Config, LintError } from '../base';
|
|
5
4
|
/**
|
|
6
5
|
* external link
|
|
7
6
|
*
|
|
@@ -31,7 +30,7 @@ export declare abstract class ExtLinkToken extends Token {
|
|
|
31
30
|
* @param space 空白字符
|
|
32
31
|
* @param text 链接文字
|
|
33
32
|
*/
|
|
34
|
-
constructor(url?: string, space?: string, text?: string, config?:
|
|
33
|
+
constructor(url?: string, space?: string, text?: string, config?: Config, accum?: Token[]);
|
|
35
34
|
cloneNode(): this;
|
|
36
35
|
/**
|
|
37
36
|
* Set the text of the link
|