wikiparser-node 1.0.0-beta.2 → 1.0.0-beta.4

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.
Files changed (127) hide show
  1. package/config/minimum.json +136 -0
  2. package/dist/index.d.ts +1 -1
  3. package/dist/index.js +4 -4
  4. package/dist/internal.d.ts +1 -1
  5. package/dist/lib/element.d.ts +12 -8
  6. package/dist/lib/element.js +72 -57
  7. package/dist/lib/node.js +4 -5
  8. package/dist/lib/range.js +5 -8
  9. package/dist/lib/ranges.js +2 -2
  10. package/dist/lib/text.d.ts +2 -2
  11. package/dist/lib/text.js +5 -5
  12. package/dist/lib/title.d.ts +3 -2
  13. package/dist/lib/title.js +11 -10
  14. package/dist/mixin/attributesParent.js +2 -2
  15. package/dist/mixin/fixed.js +3 -3
  16. package/dist/mixin/hidden.js +2 -2
  17. package/dist/mixin/singleLine.js +4 -4
  18. package/dist/mixin/sol.js +6 -6
  19. package/dist/parser/braces.js +4 -9
  20. package/dist/parser/commentAndExt.js +24 -18
  21. package/dist/parser/converter.js +8 -7
  22. package/dist/parser/externalLinks.js +3 -4
  23. package/dist/parser/hrAndDoubleUnderscore.js +4 -7
  24. package/dist/parser/html.js +4 -7
  25. package/dist/parser/links.js +4 -5
  26. package/dist/parser/list.js +3 -6
  27. package/dist/parser/magicLinks.js +3 -3
  28. package/dist/parser/quotes.js +4 -5
  29. package/dist/parser/selector.js +4 -7
  30. package/dist/parser/table.js +6 -15
  31. package/dist/src/arg.d.ts +6 -5
  32. package/dist/src/arg.js +31 -27
  33. package/dist/src/atom.d.ts +2 -1
  34. package/dist/src/atom.js +4 -4
  35. package/dist/src/attribute.d.ts +14 -13
  36. package/dist/src/attribute.js +41 -31
  37. package/dist/src/attributes.d.ts +4 -3
  38. package/dist/src/attributes.js +15 -21
  39. package/dist/src/converter.d.ts +4 -3
  40. package/dist/src/converter.js +10 -17
  41. package/dist/src/converterFlags.d.ts +9 -8
  42. package/dist/src/converterFlags.js +14 -15
  43. package/dist/src/converterRule.d.ts +4 -3
  44. package/dist/src/converterRule.js +20 -22
  45. package/dist/src/extLink.d.ts +5 -4
  46. package/dist/src/extLink.js +16 -17
  47. package/dist/src/gallery.d.ts +7 -5
  48. package/dist/src/gallery.js +15 -19
  49. package/dist/src/heading.d.ts +12 -10
  50. package/dist/src/heading.js +17 -18
  51. package/dist/src/hidden.d.ts +4 -3
  52. package/dist/src/hidden.js +4 -4
  53. package/dist/src/html.d.ts +17 -15
  54. package/dist/src/html.js +25 -23
  55. package/dist/src/imageParameter.d.ts +5 -4
  56. package/dist/src/imageParameter.js +22 -23
  57. package/dist/src/imagemap.d.ts +7 -5
  58. package/dist/src/imagemap.js +14 -19
  59. package/dist/src/imagemapLink.d.ts +8 -7
  60. package/dist/src/imagemapLink.js +4 -8
  61. package/dist/src/index.d.ts +2 -1
  62. package/dist/src/index.js +48 -46
  63. package/dist/src/link/base.d.ts +5 -4
  64. package/dist/src/link/base.js +26 -28
  65. package/dist/src/link/category.d.ts +1 -1
  66. package/dist/src/link/category.js +3 -2
  67. package/dist/src/link/file.d.ts +5 -4
  68. package/dist/src/link/file.js +22 -20
  69. package/dist/src/link/galleryImage.d.ts +5 -5
  70. package/dist/src/link/galleryImage.js +11 -10
  71. package/dist/src/link/index.d.ts +1 -1
  72. package/dist/src/link/index.js +8 -6
  73. package/dist/src/magicLink.d.ts +3 -2
  74. package/dist/src/magicLink.js +10 -11
  75. package/dist/src/nested.d.ts +4 -2
  76. package/dist/src/nested.js +5 -9
  77. package/dist/src/nowiki/base.d.ts +6 -5
  78. package/dist/src/nowiki/base.js +4 -4
  79. package/dist/src/nowiki/comment.d.ts +6 -5
  80. package/dist/src/nowiki/comment.js +8 -10
  81. package/dist/src/nowiki/dd.d.ts +1 -1
  82. package/dist/src/nowiki/dd.js +3 -2
  83. package/dist/src/nowiki/doubleUnderscore.d.ts +8 -6
  84. package/dist/src/nowiki/doubleUnderscore.js +13 -13
  85. package/dist/src/nowiki/hr.d.ts +2 -8
  86. package/dist/src/nowiki/hr.js +4 -11
  87. package/dist/src/nowiki/index.d.ts +2 -1
  88. package/dist/src/nowiki/index.js +6 -5
  89. package/dist/src/nowiki/list.d.ts +4 -4
  90. package/dist/src/nowiki/list.js +3 -2
  91. package/dist/src/nowiki/noinclude.d.ts +2 -2
  92. package/dist/src/nowiki/noinclude.js +3 -2
  93. package/dist/src/nowiki/quote.d.ts +1 -8
  94. package/dist/src/nowiki/quote.js +25 -17
  95. package/dist/src/onlyinclude.d.ts +5 -4
  96. package/dist/src/onlyinclude.js +13 -13
  97. package/dist/src/paramTag/index.d.ts +5 -3
  98. package/dist/src/paramTag/index.js +7 -7
  99. package/dist/src/paramTag/inputbox.d.ts +3 -2
  100. package/dist/src/paramTag/inputbox.js +6 -5
  101. package/dist/src/parameter.d.ts +11 -10
  102. package/dist/src/parameter.js +29 -30
  103. package/dist/src/pre.d.ts +4 -2
  104. package/dist/src/pre.js +19 -14
  105. package/dist/src/syntax.d.ts +2 -1
  106. package/dist/src/syntax.js +7 -7
  107. package/dist/src/table/base.d.ts +6 -5
  108. package/dist/src/table/base.js +6 -8
  109. package/dist/src/table/index.d.ts +9 -8
  110. package/dist/src/table/index.js +23 -24
  111. package/dist/src/table/td.d.ts +12 -10
  112. package/dist/src/table/td.js +19 -20
  113. package/dist/src/table/tr.d.ts +3 -2
  114. package/dist/src/table/tr.js +4 -3
  115. package/dist/src/table/trBase.d.ts +3 -3
  116. package/dist/src/table/trBase.js +10 -10
  117. package/dist/src/tagPair/ext.d.ts +7 -6
  118. package/dist/src/tagPair/ext.js +5 -17
  119. package/dist/src/tagPair/include.d.ts +5 -5
  120. package/dist/src/tagPair/include.js +4 -5
  121. package/dist/src/tagPair/index.d.ts +7 -7
  122. package/dist/src/tagPair/index.js +13 -19
  123. package/dist/src/transclude.d.ts +10 -9
  124. package/dist/src/transclude.js +41 -46
  125. package/dist/util/lint.js +14 -4
  126. package/dist/util/string.js +21 -20
  127. package/package.json +11 -9
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AttributesToken = void 0;
4
4
  const lint_1 = require("../util/lint");
5
5
  const string_1 = require("../util/string");
6
- const index_1 = require("../index");
6
+ const Parser = require("../index");
7
7
  const _1 = require(".");
8
8
  const atom_1 = require("./atom");
9
9
  const attribute_1 = require("./attribute");
@@ -47,7 +47,7 @@ class AttributesToken extends _1.Token {
47
47
  * @param type 标签类型
48
48
  * @param name 标签名
49
49
  */
50
- constructor(attr, type, name, config = index_1.default.getConfig(), accum = []) {
50
+ constructor(attr, type, name, config = Parser.getConfig(), accum = []) {
51
51
  super(undefined, config, true, accum, {
52
52
  AtomToken: ':', AttributeToken: ':',
53
53
  });
@@ -72,9 +72,7 @@ class AttributesToken extends _1.Token {
72
72
  const { index, 0: full, 1: key, 2: equal, 3: quoteStart, 4: quoted, 5: quoteEnd, 6: unquoted, } = mt;
73
73
  out += attr.slice(lastIndex, index);
74
74
  if (/^(?:[\w:]|\0\d+[t!~{}+-]\x7F)(?:[\w:.-]|\0\d+[t!~{}+-]\x7F)*$/u.test((0, string_1.removeComment)(key).trim())) {
75
- const value = quoted ?? unquoted, quotes = [quoteStart, quoteEnd],
76
- // @ts-expect-error abstract class
77
- token = new attribute_1.AttributeToken(type.slice(0, -1), name, key, equal, value, quotes, config, accum);
75
+ const value = quoted ?? unquoted, quotes = [quoteStart, quoteEnd], token = new attribute_1.AttributeToken(type.slice(0, -1), name, key, equal, value, quotes, config, accum);
78
76
  insertDirty();
79
77
  super.insertAt(token);
80
78
  }
@@ -109,8 +107,7 @@ class AttributesToken extends _1.Token {
109
107
  * @param key 属性名
110
108
  */
111
109
  getAttrToken(key) {
112
- const tokens = this.getAttrTokens(key);
113
- return tokens.at(-1);
110
+ return this.getAttrTokens(key).at(-1);
114
111
  }
115
112
  /**
116
113
  * 获取标签属性
@@ -154,7 +151,7 @@ class AttributesToken extends _1.Token {
154
151
  if (duplicated.size > 0) {
155
152
  rect ??= { start, ...this.getRootNode().posFromIndex(start) };
156
153
  for (const key of duplicated) {
157
- errors.push(...attrs.get(key).map(attr => (0, lint_1.generateForChild)(attr, rect, index_1.default.msg('duplicated $1 attribute', key))));
154
+ errors.push(...attrs.get(key).map(attr => (0, lint_1.generateForChild)(attr, rect, Parser.msg('duplicated $1 attribute', key))));
158
155
  }
159
156
  }
160
157
  return errors;
@@ -178,15 +175,14 @@ class AttributesToken extends _1.Token {
178
175
  this.removeAt(i);
179
176
  }
180
177
  }
181
- if (!index_1.default.running && dirty) {
182
- index_1.default.warn(`${this.constructor.name}.sanitize 方法将清理无效属性!`);
178
+ if (!Parser.running && dirty) {
179
+ Parser.warn(`${this.constructor.name}.sanitize 方法将清理无效属性!`);
183
180
  }
184
181
  }
185
182
  /** @override */
186
183
  cloneNode() {
187
184
  const cloned = this.cloneChildNodes();
188
- return index_1.default.run(() => {
189
- // @ts-expect-error abstract class
185
+ return Parser.run(() => {
190
186
  const token = new AttributesToken(undefined, this.type, this.name, this.getAttribute('config'));
191
187
  token.append(...cloned);
192
188
  return token;
@@ -224,10 +220,10 @@ class AttributesToken extends _1.Token {
224
220
  super.insertAt(token, i);
225
221
  const { previousVisibleSibling, nextVisibleSibling } = token, type = `${this.type.slice(0, -1)}-dirty`, config = this.getAttribute('config'), acceptable = { [`Stage-${stages[this.type]}`]: ':' };
226
222
  if (nextVisibleSibling && !/^\s/u.test(String(nextVisibleSibling))) {
227
- super.insertAt(index_1.default.run(() => new atom_1.AtomToken(' ', type, config, [], acceptable)), i + 1);
223
+ super.insertAt(Parser.run(() => new atom_1.AtomToken(' ', type, config, [], acceptable)), i + 1);
228
224
  }
229
225
  if (previousVisibleSibling && !/\s$/u.test(String(previousVisibleSibling))) {
230
- super.insertAt(index_1.default.run(() => new atom_1.AtomToken(' ', type, config, [], acceptable)), i);
226
+ super.insertAt(Parser.run(() => new atom_1.AtomToken(' ', type, config, [], acceptable)), i);
231
227
  }
232
228
  return token;
233
229
  }
@@ -252,13 +248,11 @@ class AttributesToken extends _1.Token {
252
248
  }
253
249
  const config = this.getAttribute('config'), include = this.getAttribute('include'), parsedKey = this.type === 'ext-attrs'
254
250
  ? k
255
- : index_1.default.run(() => String(new _1.Token(k, config).parseOnce(0, include).parseOnce()));
251
+ : Parser.run(() => String(new _1.Token(k, config).parseOnce(0, include).parseOnce()));
256
252
  if (!/^(?:[\w:]|\0\d+[t!~{}+-]\x7F)(?:[\w:.-]|\0\d+[t!~{}+-]\x7F)*$/u.test(parsedKey)) {
257
253
  throw new RangeError(`无效的属性名:${k}!`);
258
254
  }
259
- // @ts-expect-error abstract class
260
- const newAttr = index_1.default.run(() => new attribute_1.AttributeToken(this.type.slice(0, -1), this.name, k, value === true ? '' : '=', value === true ? '' : value, ['"', '"'], config));
261
- this.insertAt(newAttr);
255
+ this.insertAt(Parser.run(() => new attribute_1.AttributeToken(this.type.slice(0, -1), this.name, k, value === true ? '' : '=', value === true ? '' : value, ['"', '"'], config)));
262
256
  }
263
257
  /** @private */
264
258
  matchesAttr(key, equal, val = '', i) {
@@ -342,11 +336,11 @@ class AttributesToken extends _1.Token {
342
336
  return str && type !== 'table-attrs' && !leadingRegex[type].test(str) ? ' ' : '';
343
337
  }
344
338
  /** @override */
345
- toString(selector) {
339
+ toString(omit) {
346
340
  if (this.type === 'table-attrs') {
347
341
  (0, string_1.normalizeSpace)(this);
348
342
  }
349
- const str = super.toString(selector);
343
+ const str = super.toString(omit);
350
344
  return `${this.#leadingSpace(str)}${str}`;
351
345
  }
352
346
  /** @private */
@@ -363,4 +357,4 @@ class AttributesToken extends _1.Token {
363
357
  }
364
358
  }
365
359
  exports.AttributesToken = AttributesToken;
366
- index_1.default.classes['AttributesToken'] = __filename;
360
+ Parser.classes['AttributesToken'] = __filename;
@@ -1,3 +1,4 @@
1
+ import * as Parser from '../index';
1
2
  import { Token } from '.';
2
3
  import { ConverterFlagsToken } from './converterFlags';
3
4
  import { ConverterRuleToken } from './converterRule';
@@ -5,7 +6,7 @@ import { ConverterRuleToken } from './converterRule';
5
6
  * 转换
6
7
  * @classdesc `{childNodes: [ConverterFlagsToken, ...ConverterRuleToken]}`
7
8
  */
8
- export declare abstract class ConverterToken extends Token {
9
+ export declare class ConverterToken extends Token {
9
10
  /** @browser */
10
11
  readonly type = "converter";
11
12
  childNodes: [ConverterFlagsToken, ...ConverterRuleToken[]];
@@ -23,12 +24,12 @@ export declare abstract class ConverterToken extends Token {
23
24
  * @param flags 转换类型标记
24
25
  * @param rules 转换规则
25
26
  */
26
- constructor(flags: string[], rules: [string, ...string[]], config?: import("../index").Config, accum?: Token[]);
27
+ constructor(flags: string[], rules: [string, ...string[]], config?: Parser.Config, accum?: Token[]);
27
28
  /**
28
29
  * @override
29
30
  * @browser
30
31
  */
31
- toString(selector?: string): string;
32
+ toString(omit?: Set<string>): string;
32
33
  /**
33
34
  * @override
34
35
  * @browser
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ConverterToken = void 0;
4
4
  const string_1 = require("../util/string");
5
- const index_1 = require("../index");
5
+ const Parser = require("../index");
6
6
  const _1 = require(".");
7
7
  const converterFlags_1 = require("./converterFlags");
8
8
  const converterRule_1 = require("./converterRule");
@@ -26,21 +26,15 @@ class ConverterToken extends _1.Token {
26
26
  * @param flags 转换类型标记
27
27
  * @param rules 转换规则
28
28
  */
29
- constructor(flags, rules, config = index_1.default.getConfig(), accum = []) {
29
+ constructor(flags, rules, config = Parser.getConfig(), accum = []) {
30
30
  super(undefined, config, true, accum);
31
- // @ts-expect-error abstract class
32
31
  this.append(new converterFlags_1.ConverterFlagsToken(flags, config, accum));
33
- const [firstRule] = rules, hasColon = firstRule.includes(':'),
34
- // @ts-expect-error abstract class
35
- firstRuleToken = new converterRule_1.ConverterRuleToken(firstRule, hasColon, config, accum);
32
+ const [firstRule] = rules, hasColon = firstRule.includes(':'), firstRuleToken = new converterRule_1.ConverterRuleToken(firstRule, hasColon, config, accum);
36
33
  if (hasColon && firstRuleToken.length === 1) {
37
- // @ts-expect-error abstract class
38
34
  this.insertAt(new converterRule_1.ConverterRuleToken(rules.join(';'), false, config, accum));
39
35
  }
40
36
  else {
41
- this.append(firstRuleToken,
42
- // @ts-expect-error abstract class
43
- ...rules.slice(1).map(rule => new converterRule_1.ConverterRuleToken(rule, true, config, accum)));
37
+ this.append(firstRuleToken, ...rules.slice(1).map(rule => new converterRule_1.ConverterRuleToken(rule, true, config, accum)));
44
38
  }
45
39
  this.protectChildren(0);
46
40
  }
@@ -48,11 +42,11 @@ class ConverterToken extends _1.Token {
48
42
  * @override
49
43
  * @browser
50
44
  */
51
- toString(selector) {
45
+ toString(omit) {
52
46
  const { childNodes: [flags, ...rules] } = this;
53
- return selector && this.matches(selector)
47
+ return omit && this.matchesTypes(omit)
54
48
  ? ''
55
- : `-{${flags.toString(selector)}${flags.length > 0 ? '|' : ''}${rules.map(rule => rule.toString(selector)).join(';')}}-`;
49
+ : `-{${flags.toString(omit)}${flags.length > 0 ? '|' : ''}${rules.map(rule => rule.toString(omit)).join(';')}}-`;
56
50
  }
57
51
  /**
58
52
  * @override
@@ -81,9 +75,8 @@ class ConverterToken extends _1.Token {
81
75
  /** @override */
82
76
  cloneNode() {
83
77
  const [flags, ...rules] = this.cloneChildNodes();
84
- return index_1.default.run(() => {
85
- // @ts-expect-error abstract class
86
- const token = new ConverterToken([], [], this.getAttribute('config'));
78
+ return Parser.run(() => {
79
+ const token = new ConverterToken([], [''], this.getAttribute('config'));
87
80
  token.firstChild.safeReplaceWith(flags);
88
81
  token.append(...rules);
89
82
  return token;
@@ -138,4 +131,4 @@ class ConverterToken extends _1.Token {
138
131
  }
139
132
  }
140
133
  exports.ConverterToken = ConverterToken;
141
- index_1.default.classes['ConverterToken'] = __filename;
134
+ Parser.classes['ConverterToken'] = __filename;
@@ -1,3 +1,4 @@
1
+ import * as Parser from '../index';
1
2
  import { Token } from '.';
2
3
  import { AtomToken } from './atom';
3
4
  import type { LintError } from '../index';
@@ -6,7 +7,7 @@ import type { ConverterToken, ConverterRuleToken } from '../internal';
6
7
  * 转换flags
7
8
  * @classdesc `{childNodes: ...AtomToken}`
8
9
  */
9
- export declare abstract class ConverterFlagsToken extends Token {
10
+ export declare class ConverterFlagsToken extends Token {
10
11
  #private;
11
12
  /** @browser */
12
13
  readonly type = "converter-flags";
@@ -26,22 +27,17 @@ export declare abstract class ConverterFlagsToken extends Token {
26
27
  * @browser
27
28
  * @param flags 转换类型标记
28
29
  */
29
- constructor(flags: string[], config?: import("../index").Config, accum?: Token[]);
30
+ constructor(flags: string[], config?: Parser.Config, accum?: Token[]);
30
31
  /**
31
32
  * @override
32
33
  * @browser
33
34
  */
34
- toString(selector?: string): string;
35
+ toString(omit?: Set<string>): string;
35
36
  /**
36
37
  * @override
37
38
  * @browser
38
39
  */
39
40
  text(): string;
40
- /**
41
- * @override
42
- * @browser
43
- */
44
- print(): string;
45
41
  /**
46
42
  * 获取未知的转换类型标记
47
43
  * @browser
@@ -57,6 +53,11 @@ export declare abstract class ConverterFlagsToken extends Token {
57
53
  * @browser
58
54
  */
59
55
  lint(start?: number): LintError[];
56
+ /**
57
+ * @override
58
+ * @browser
59
+ */
60
+ print(): string;
60
61
  /** @override */
61
62
  cloneNode(): this;
62
63
  /**
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ConverterFlagsToken = void 0;
4
4
  const lint_1 = require("../util/lint");
5
- const index_1 = require("../index");
5
+ const Parser = require("../index");
6
6
  const _1 = require(".");
7
7
  const atom_1 = require("./atom");
8
8
  const definedFlags = new Set(['A', 'T', 'R', 'D', '-', 'H', 'N']);
@@ -19,7 +19,7 @@ class ConverterFlagsToken extends _1.Token {
19
19
  * @browser
20
20
  * @param flags 转换类型标记
21
21
  */
22
- constructor(flags, config = index_1.default.getConfig(), accum = []) {
22
+ constructor(flags, config = Parser.getConfig(), accum = []) {
23
23
  super(undefined, config, true, accum, {
24
24
  AtomToken: ':',
25
25
  });
@@ -39,8 +39,8 @@ class ConverterFlagsToken extends _1.Token {
39
39
  * @override
40
40
  * @browser
41
41
  */
42
- toString(selector) {
43
- return super.toString(selector, ';');
42
+ toString(omit) {
43
+ return super.toString(omit, ';');
44
44
  }
45
45
  /**
46
46
  * @override
@@ -53,13 +53,6 @@ class ConverterFlagsToken extends _1.Token {
53
53
  getGaps(i) {
54
54
  return i < this.length - 1 ? 1 : 0;
55
55
  }
56
- /**
57
- * @override
58
- * @browser
59
- */
60
- print() {
61
- return super.print({ sep: ';' });
62
- }
63
56
  /**
64
57
  * 获取未知的转换类型标记
65
58
  * @browser
@@ -95,11 +88,17 @@ class ConverterFlagsToken extends _1.Token {
95
88
  }
96
89
  return errors;
97
90
  }
91
+ /**
92
+ * @override
93
+ * @browser
94
+ */
95
+ print() {
96
+ return super.print({ sep: ';' });
97
+ }
98
98
  /** @override */
99
99
  cloneNode() {
100
100
  const cloned = this.cloneChildNodes();
101
- return index_1.default.run(() => {
102
- // @ts-expect-error abstract class
101
+ return Parser.run(() => {
103
102
  const token = new ConverterFlagsToken([], this.getAttribute('config'));
104
103
  token.append(...cloned);
105
104
  token.afterBuild();
@@ -209,7 +208,7 @@ class ConverterFlagsToken extends _1.Token {
209
208
  * @param flag 转换类型标记
210
209
  */
211
210
  #newFlag(flag) {
212
- const token = index_1.default.run(() => new atom_1.AtomToken(flag, 'converter-flag', this.getAttribute('config')));
211
+ const token = Parser.run(() => new atom_1.AtomToken(flag, 'converter-flag', this.getAttribute('config')));
213
212
  this.insertAt(token);
214
213
  }
215
214
  /**
@@ -235,4 +234,4 @@ class ConverterFlagsToken extends _1.Token {
235
234
  }
236
235
  }
237
236
  exports.ConverterFlagsToken = ConverterFlagsToken;
238
- index_1.default.classes['ConverterFlagsToken'] = __filename;
237
+ Parser.classes['ConverterFlagsToken'] = __filename;
@@ -1,3 +1,4 @@
1
+ import * as Parser from '../index';
1
2
  import { Token } from '.';
2
3
  import { AtomToken } from './atom';
3
4
  import type { ConverterToken, ConverterFlagsToken } from '../internal';
@@ -5,7 +6,7 @@ import type { ConverterToken, ConverterFlagsToken } from '../internal';
5
6
  * 转换规则
6
7
  * @classdesc `{childNodes: ...AtomToken}`
7
8
  */
8
- export declare abstract class ConverterRuleToken extends Token {
9
+ export declare class ConverterRuleToken extends Token {
9
10
  /** @browser */
10
11
  readonly type = "converter-rule";
11
12
  childNodes: [AtomToken] | [AtomToken, AtomToken] | [AtomToken, AtomToken, AtomToken];
@@ -36,12 +37,12 @@ export declare abstract class ConverterRuleToken extends Token {
36
37
  * @param rule 转换规则
37
38
  * @param hasColon 是否带有":"
38
39
  */
39
- constructor(rule: string, hasColon?: boolean, config?: import("../index").Config, accum?: Token[]);
40
+ constructor(rule: string, hasColon?: boolean, config?: Parser.Config, accum?: Token[]);
40
41
  /**
41
42
  * @override
42
43
  * @browser
43
44
  */
44
- toString(selector?: string): string;
45
+ toString(omit?: Set<string>): string;
45
46
  /**
46
47
  * @override
47
48
  * @browser
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ConverterRuleToken = void 0;
4
4
  const debug_1 = require("../util/debug");
5
5
  const string_1 = require("../util/string");
6
- const index_1 = require("../index");
6
+ const Parser = require("../index");
7
7
  const _1 = require(".");
8
8
  const atom_1 = require("./atom");
9
9
  /**
@@ -59,7 +59,7 @@ class ConverterRuleToken extends _1.Token {
59
59
  * @param rule 转换规则
60
60
  * @param hasColon 是否带有":"
61
61
  */
62
- constructor(rule, hasColon = true, config = index_1.default.getConfig(), accum = []) {
62
+ constructor(rule, hasColon = true, config = Parser.getConfig(), accum = []) {
63
63
  super(undefined, config, true, accum);
64
64
  if (hasColon) {
65
65
  const i = rule.indexOf(':'), j = rule.slice(0, i).indexOf('=>'), v = j === -1 ? rule.slice(0, i) : rule.slice(j + 2, i);
@@ -83,13 +83,13 @@ class ConverterRuleToken extends _1.Token {
83
83
  * @override
84
84
  * @browser
85
85
  */
86
- toString(selector) {
86
+ toString(omit) {
87
87
  const { childNodes } = this;
88
- if (childNodes.length === 3 && !(selector && this.matches(selector))) {
88
+ if (childNodes.length === 3 && !(omit && this.matchesTypes(omit))) {
89
89
  const [from, variant, to] = childNodes;
90
- return `${from.toString(selector)}=>${variant.toString(selector)}:${to.toString(selector)}`;
90
+ return `${from.toString(omit)}=>${variant.toString(omit)}:${to.toString(omit)}`;
91
91
  }
92
- return super.toString(selector, ':');
92
+ return super.toString(omit, ':');
93
93
  }
94
94
  /**
95
95
  * @override
@@ -105,8 +105,7 @@ class ConverterRuleToken extends _1.Token {
105
105
  }
106
106
  /** @private */
107
107
  getGaps(i) {
108
- const { length } = this;
109
- return i === 0 && length === 3 ? 2 : 1;
108
+ return i === 0 && this.length === 3 ? 2 : 1;
110
109
  }
111
110
  /**
112
111
  * @override
@@ -123,9 +122,8 @@ class ConverterRuleToken extends _1.Token {
123
122
  /** @override */
124
123
  cloneNode() {
125
124
  const cloned = this.cloneChildNodes(), placeholders = ['', 'zh:', '=>zh:'], placeholder = placeholders[cloned.length - 1];
126
- return index_1.default.run(() => {
127
- // @ts-expect-error abstract class
128
- const token = new ConverterRuleToken(placeholder, placeholder, this.getAttribute('config'));
125
+ return Parser.run(() => {
126
+ const token = new ConverterRuleToken(placeholder, Boolean(placeholder), this.getAttribute('config'));
129
127
  for (let i = 0; i < cloned.length; i++) {
130
128
  token.childNodes[i].safeReplaceWith(cloned[i]);
131
129
  }
@@ -182,17 +180,17 @@ class ConverterRuleToken extends _1.Token {
182
180
  * @throws `SyntaxError` 非法的转换目标
183
181
  */
184
182
  setTo(to) {
185
- const config = this.getAttribute('config'), include = this.getAttribute('include'), root = index_1.default.parse(`-{|${config.variants[0] ?? 'zh'}:${to}}-`, include, undefined, config), { length, firstChild: converter } = root;
183
+ const config = this.getAttribute('config'), include = this.getAttribute('include'), root = Parser.parse(`-{|${config.variants[0] ?? 'zh'}:${to}}-`, include, undefined, config), { length, firstChild: converter } = root;
186
184
  if (length !== 1 || converter.type !== 'converter') {
187
185
  throw new SyntaxError(`非法的转换目标:${(0, string_1.noWrap)(to)}`);
188
186
  }
189
187
  const { lastChild: converterRule } = converter;
190
- if (converter.length === 2 && converterRule.length === 2) {
191
- const { lastChild } = converterRule;
192
- converterRule.destroy();
193
- this.lastChild.safeReplaceWith(lastChild);
188
+ if (converter.length !== 2 || converterRule.length !== 2) {
189
+ throw new SyntaxError(`非法的转换目标:${(0, string_1.noWrap)(to)}`);
194
190
  }
195
- throw new SyntaxError(`非法的转换目标:${(0, string_1.noWrap)(to)}`);
191
+ const { lastChild } = converterRule;
192
+ converterRule.destroy();
193
+ this.lastChild.safeReplaceWith(lastChild);
196
194
  }
197
195
  /**
198
196
  * 设置语言变体
@@ -205,7 +203,7 @@ class ConverterRuleToken extends _1.Token {
205
203
  throw new RangeError(`无效的语言变体:${v}`);
206
204
  }
207
205
  else if (this.length === 1) {
208
- super.insertAt(index_1.default.run(() => new atom_1.AtomToken(variant, 'converter-rule-variant', config)), 0);
206
+ super.insertAt(Parser.run(() => new atom_1.AtomToken(variant, 'converter-rule-variant', config)), 0);
209
207
  }
210
208
  else {
211
209
  this.childNodes.at(-2).setText(variant);
@@ -218,11 +216,11 @@ class ConverterRuleToken extends _1.Token {
218
216
  * @throws `SyntaxError` 非法的转换原文
219
217
  */
220
218
  setFrom(from) {
221
- const { variant, unidirectional } = this;
219
+ const { variant, unidirectional, firstChild } = this;
222
220
  if (!variant) {
223
221
  throw new Error('请先指定语言变体!');
224
222
  }
225
- const config = this.getAttribute('config'), root = index_1.default.parse(`-{|${from}=>${variant}:}-`, this.getAttribute('include'), undefined, config), { length, firstChild: converter } = root;
223
+ const config = this.getAttribute('config'), root = Parser.parse(`-{|${from}=>${variant}:}-`, this.getAttribute('include'), undefined, config), { length, firstChild: converter } = root;
226
224
  if (length !== 1 || converter.type !== 'converter') {
227
225
  throw new SyntaxError(`非法的转换原文:${(0, string_1.noWrap)(from)}`);
228
226
  }
@@ -231,7 +229,7 @@ class ConverterRuleToken extends _1.Token {
231
229
  throw new SyntaxError(`非法的转换原文:${(0, string_1.noWrap)(from)}`);
232
230
  }
233
231
  else if (unidirectional) {
234
- this.firstChild.safeReplaceWith(converterRule.firstChild);
232
+ firstChild.safeReplaceWith(converterRule.firstChild);
235
233
  }
236
234
  else {
237
235
  super.insertAt(converterRule.firstChild, 0);
@@ -252,4 +250,4 @@ class ConverterRuleToken extends _1.Token {
252
250
  }
253
251
  }
254
252
  exports.ConverterRuleToken = ConverterRuleToken;
255
- index_1.default.classes['ConverterRuleToken'] = __filename;
253
+ Parser.classes['ConverterRuleToken'] = __filename;
@@ -1,10 +1,11 @@
1
+ import * as Parser from '../index';
1
2
  import { Token } from '.';
2
3
  import { MagicLinkToken } from './magicLink';
3
4
  /**
4
5
  * 外链
5
6
  * @classdesc `{childNodes: [MagicLinkToken, ?Token]}`
6
7
  */
7
- export declare abstract class ExtLinkToken extends Token {
8
+ export declare class ExtLinkToken extends Token {
8
9
  #private;
9
10
  /** @browser */
10
11
  readonly type = "ext-link";
@@ -28,12 +29,12 @@ export declare abstract class ExtLinkToken extends Token {
28
29
  * @param space 空白字符
29
30
  * @param text 链接文字
30
31
  */
31
- constructor(url: string, space?: string, text?: string, config?: import("../index").Config, accum?: Token[]);
32
+ constructor(url?: string, space?: string, text?: string, config?: Parser.Config, accum?: Token[]);
32
33
  /**
33
34
  * @override
34
35
  * @browser
35
36
  */
36
- toString(selector?: string): string;
37
+ toString(omit?: Set<string>): string;
37
38
  /**
38
39
  * @override
39
40
  * @browser
@@ -53,7 +54,7 @@ export declare abstract class ExtLinkToken extends Token {
53
54
  * @param url 网址
54
55
  * @throws `SyntaxError` 非法的外链目标
55
56
  */
56
- setTarget(url: string | URL): void;
57
+ setTarget(url: string): void;
57
58
  /**
58
59
  * 设置链接显示文字
59
60
  * @param str 链接显示文字
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ExtLinkToken = void 0;
4
4
  const string_1 = require("../util/string");
5
- const index_1 = require("../index");
5
+ const Parser = require("../index");
6
6
  const _1 = require(".");
7
7
  const magicLink_1 = require("./magicLink");
8
8
  /**
@@ -40,7 +40,7 @@ class ExtLinkToken extends _1.Token {
40
40
  * @param space 空白字符
41
41
  * @param text 链接文字
42
42
  */
43
- constructor(url, space = '', text = '', config = index_1.default.getConfig(), accum = []) {
43
+ constructor(url, space = '', text = '', config = Parser.getConfig(), accum = []) {
44
44
  super(undefined, config, true, accum, {
45
45
  MagicLinkToken: 0, Token: 1,
46
46
  });
@@ -51,7 +51,7 @@ class ExtLinkToken extends _1.Token {
51
51
  'Stage-7': ':', ConverterToken: ':',
52
52
  });
53
53
  inner.type = 'ext-link-text';
54
- this.insertAt(inner.setAttribute('stage', index_1.default.MAX_STAGE - 1));
54
+ this.insertAt(inner.setAttribute('stage', Parser.MAX_STAGE - 1));
55
55
  }
56
56
  this.protectChildren(0);
57
57
  }
@@ -59,16 +59,16 @@ class ExtLinkToken extends _1.Token {
59
59
  * @override
60
60
  * @browser
61
61
  */
62
- toString(selector) {
63
- if (selector && this.matches(selector)) {
62
+ toString(omit) {
63
+ if (omit && this.matchesTypes(omit)) {
64
64
  return '';
65
65
  }
66
66
  else if (this.length === 1) {
67
- return `[${super.toString(selector)}${this.#space}]`;
67
+ return `[${super.toString(omit)}${this.#space}]`;
68
68
  }
69
69
  this.#correct();
70
70
  (0, string_1.normalizeSpace)(this.lastChild);
71
- return `[${super.toString(selector, this.#space)}]`;
71
+ return `[${super.toString(omit, this.#space)}]`;
72
72
  }
73
73
  /**
74
74
  * @override
@@ -97,8 +97,7 @@ class ExtLinkToken extends _1.Token {
97
97
  /** @override */
98
98
  cloneNode() {
99
99
  const [url, text] = this.cloneChildNodes();
100
- return index_1.default.run(() => {
101
- // @ts-expect-error abstract class
100
+ return Parser.run(() => {
102
101
  const token = new ExtLinkToken(undefined, '', '', this.getAttribute('config'));
103
102
  token.firstChild.safeReplaceWith(url);
104
103
  if (text) {
@@ -125,13 +124,13 @@ class ExtLinkToken extends _1.Token {
125
124
  * @throws `SyntaxError` 非法的外链目标
126
125
  */
127
126
  setTarget(url) {
128
- const strUrl = String(url), root = index_1.default.parse(`[${strUrl}]`, this.getAttribute('include'), 8, this.getAttribute('config')), { length, firstChild: extLink } = root;
129
- if (length === 1 && extLink instanceof ExtLinkToken && extLink.length === 1) {
130
- const { firstChild } = extLink;
131
- extLink.destroy();
132
- this.firstChild.safeReplaceWith(firstChild);
127
+ const root = Parser.parse(`[${url}]`, this.getAttribute('include'), 8, this.getAttribute('config')), { length, firstChild: extLink } = root;
128
+ if (length !== 1 || !(extLink instanceof ExtLinkToken) || extLink.length !== 1) {
129
+ throw new SyntaxError(`非法的外链目标:${url}`);
133
130
  }
134
- throw new SyntaxError(`非法的外链目标:${strUrl}`);
131
+ const { firstChild } = extLink;
132
+ extLink.destroy();
133
+ this.firstChild.safeReplaceWith(firstChild);
135
134
  }
136
135
  /**
137
136
  * 设置链接显示文字
@@ -139,7 +138,7 @@ class ExtLinkToken extends _1.Token {
139
138
  * @throws `SyntaxError` 非法的链接显示文字
140
139
  */
141
140
  setLinkText(str) {
142
- const root = index_1.default.parse(`[//url ${str}]`, this.getAttribute('include'), 8, this.getAttribute('config')), { length, firstChild: extLink } = root;
141
+ const root = Parser.parse(`[//url ${str}]`, this.getAttribute('include'), 8, this.getAttribute('config')), { length, firstChild: extLink } = root;
143
142
  if (length !== 1 || !(extLink instanceof ExtLinkToken) || extLink.length !== 2) {
144
143
  throw new SyntaxError(`非法的外链文字:${(0, string_1.noWrap)(str)}`);
145
144
  }
@@ -154,4 +153,4 @@ class ExtLinkToken extends _1.Token {
154
153
  }
155
154
  }
156
155
  exports.ExtLinkToken = ExtLinkToken;
157
- index_1.default.classes['ExtLinkToken'] = __filename;
156
+ Parser.classes['ExtLinkToken'] = __filename;
@@ -1,3 +1,4 @@
1
+ import * as Parser from '../index';
1
2
  import { Token } from '.';
2
3
  import { GalleryImageToken } from './link/galleryImage';
3
4
  import { HiddenToken } from './hidden';
@@ -7,9 +8,10 @@ import type { AstNodes, AstText, AttributesToken, ExtToken } from '../internal';
7
8
  * gallery标签
8
9
  * @classdesc `{childNodes: ...(GalleryImageToken|HiddenToken|AstText)}`
9
10
  */
10
- export declare abstract class GalleryToken extends Token {
11
+ export declare class GalleryToken extends Token {
11
12
  /** @browser */
12
13
  readonly type = "ext-inner";
14
+ name: 'gallery';
13
15
  childNodes: (GalleryImageToken | HiddenToken | AstText)[];
14
16
  abstract get children(): (GalleryImageToken | HiddenToken)[];
15
17
  abstract get firstChild(): GalleryImageToken | HiddenToken | AstText | undefined;
@@ -28,12 +30,12 @@ export declare abstract class GalleryToken extends Token {
28
30
  * @browser
29
31
  * @param inner 标签内部wikitext
30
32
  */
31
- constructor(inner?: string, config?: import("../index").Config, accum?: Token[]);
33
+ constructor(inner?: string, config?: Parser.Config, accum?: Token[]);
32
34
  /**
33
35
  * @override
34
36
  * @browser
35
37
  */
36
- toString(selector?: string): string;
38
+ toString(omit?: Set<string>): string;
37
39
  /**
38
40
  * @override
39
41
  * @browser
@@ -43,12 +45,12 @@ export declare abstract class GalleryToken extends Token {
43
45
  * @override
44
46
  * @browser
45
47
  */
46
- print(): string;
48
+ lint(start?: number): LintError[];
47
49
  /**
48
50
  * @override
49
51
  * @browser
50
52
  */
51
- lint(start?: number): LintError[];
53
+ print(): string;
52
54
  /** @override */
53
55
  cloneNode(): this;
54
56
  /**