wikiparser-node 1.5.3 → 1.5.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 (54) hide show
  1. package/dist/lib/element.d.ts +2 -1
  2. package/dist/lib/element.js +3 -2
  3. package/dist/lib/text.d.ts +2 -1
  4. package/dist/lib/text.js +8 -15
  5. package/dist/src/arg.d.ts +1 -1
  6. package/dist/src/arg.js +3 -3
  7. package/dist/src/attribute.d.ts +1 -1
  8. package/dist/src/attribute.js +2 -2
  9. package/dist/src/attributes.d.ts +1 -1
  10. package/dist/src/attributes.js +2 -2
  11. package/dist/src/converterFlags.d.ts +1 -1
  12. package/dist/src/converterFlags.js +2 -2
  13. package/dist/src/extLink.d.ts +1 -1
  14. package/dist/src/extLink.js +2 -2
  15. package/dist/src/gallery.d.ts +1 -1
  16. package/dist/src/gallery.js +2 -2
  17. package/dist/src/heading.d.ts +1 -1
  18. package/dist/src/heading.js +2 -2
  19. package/dist/src/html.d.ts +1 -1
  20. package/dist/src/html.js +2 -2
  21. package/dist/src/imageParameter.d.ts +1 -1
  22. package/dist/src/imageParameter.js +2 -2
  23. package/dist/src/imagemap.d.ts +1 -1
  24. package/dist/src/imagemap.js +2 -2
  25. package/dist/src/index.d.ts +1 -1
  26. package/dist/src/index.js +2 -2
  27. package/dist/src/link/base.d.ts +1 -1
  28. package/dist/src/link/base.js +2 -2
  29. package/dist/src/link/file.d.ts +1 -1
  30. package/dist/src/link/file.js +2 -2
  31. package/dist/src/link/galleryImage.d.ts +1 -1
  32. package/dist/src/link/galleryImage.js +2 -2
  33. package/dist/src/link/index.d.ts +1 -1
  34. package/dist/src/link/index.js +2 -2
  35. package/dist/src/magicLink.d.ts +1 -1
  36. package/dist/src/magicLink.js +2 -2
  37. package/dist/src/nested.d.ts +1 -1
  38. package/dist/src/nested.js +2 -2
  39. package/dist/src/nowiki/index.js +1 -1
  40. package/dist/src/parameter.d.ts +1 -1
  41. package/dist/src/parameter.js +2 -2
  42. package/dist/src/pre.d.ts +3 -0
  43. package/dist/src/pre.js +4 -0
  44. package/dist/src/table/index.d.ts +1 -1
  45. package/dist/src/table/index.js +2 -2
  46. package/dist/src/table/td.d.ts +1 -1
  47. package/dist/src/table/td.js +2 -2
  48. package/dist/src/table/trBase.d.ts +1 -1
  49. package/dist/src/table/trBase.js +2 -2
  50. package/dist/src/tagPair/ext.d.ts +1 -1
  51. package/dist/src/tagPair/ext.js +2 -2
  52. package/dist/src/transclude.d.ts +1 -1
  53. package/dist/src/transclude.js +2 -2
  54. package/package.json +1 -1
@@ -75,8 +75,9 @@ export declare abstract class AstElement extends AstNode {
75
75
  /**
76
76
  * @override
77
77
  * @param start
78
+ * @param re 用于`AstText`后代节点的正则表达式
78
79
  */
79
- lint(start?: number): LintError[];
80
+ lint(start?: number, re?: RegExp): LintError[];
80
81
  /**
81
82
  * @override
82
83
  * @param opt 选项
@@ -239,12 +239,13 @@ class AstElement extends node_1.AstNode {
239
239
  /**
240
240
  * @override
241
241
  * @param start
242
+ * @param re 用于`AstText`后代节点的正则表达式
242
243
  */
243
- lint(start = this.getAbsoluteIndex()) {
244
+ lint(start = this.getAbsoluteIndex(), re) {
244
245
  const errors = [];
245
246
  for (let i = 0, cur = start + this.getAttribute('padding'); i < this.length; i++) {
246
247
  const child = this.childNodes[i];
247
- errors.push(...child.lint(cur));
248
+ errors.push(...child.lint(cur, re));
248
249
  cur += String(child).length + this.getGaps(i);
249
250
  }
250
251
  return errors;
@@ -15,9 +15,10 @@ export declare class AstText extends AstNode {
15
15
  /**
16
16
  * @override
17
17
  * @param start
18
+ * @param errorRegex 正则表达式
18
19
  * @throws `Error` 孤立文本节点
19
20
  */
20
- lint(start?: number): LintError[];
21
+ lint(start?: number, errorRegex?: RegExp): LintError[];
21
22
  /**
22
23
  * 替换字符串
23
24
  * @param text 替换的字符串
package/dist/lib/text.js CHANGED
@@ -112,16 +112,17 @@ class AstText extends node_1.AstNode {
112
112
  /**
113
113
  * @override
114
114
  * @param start
115
+ * @param errorRegex 正则表达式
115
116
  * @throws `Error` 孤立文本节点
116
117
  */
117
- lint(start = this.getAbsoluteIndex()) {
118
+ lint(start = this.getAbsoluteIndex(), errorRegex) {
118
119
  const { data, parentNode, nextSibling, previousSibling } = this;
119
120
  if (!parentNode) {
120
121
  /* NOT FOR BROWSER */
121
122
  throw new Error('无法对孤立文本节点进行语法分析!');
122
123
  /* NOT FOR BROWSER END */
123
124
  }
124
- const { type, name, parentNode: grandparent } = parentNode, nowiki = name === 'nowiki' || name === 'pre';
125
+ const { type, name, parentNode: grandparent } = parentNode;
125
126
  let isHtmlAttrVal = false;
126
127
  if (type === 'attr-value') {
127
128
  const { type: grandType, name: grandName, tag } = grandparent;
@@ -132,20 +133,12 @@ class AstText extends node_1.AstNode {
132
133
  return [];
133
134
  }
134
135
  }
135
- const { NowikiToken } = require('../src/nowiki');
136
- let errorRegex;
137
- if (type === 'ext-inner' && (name === 'pre' || parentNode instanceof NowikiToken)) {
138
- errorRegex = new RegExp(`<\\s*(?:\\/\\s*)${nowiki ? '' : '?'}(${name})\\b`, 'giu');
139
- }
140
- else if (type === 'free-ext-link'
136
+ errorRegex ??= type === 'free-ext-link'
141
137
  || type === 'ext-link-url'
142
138
  || type === 'image-parameter' && name === 'link'
143
- || isHtmlAttrVal) {
144
- errorRegex = errorSyntaxUrl;
145
- }
146
- else {
147
- errorRegex = errorSyntax;
148
- }
139
+ || isHtmlAttrVal
140
+ ? errorSyntaxUrl
141
+ : errorSyntax;
149
142
  if (data.search(errorRegex) === -1) {
150
143
  return [];
151
144
  }
@@ -172,7 +165,7 @@ class AstText extends node_1.AstNode {
172
165
  else if (char === ']' && (index || length > 1)) {
173
166
  errorRegex.lastIndex--;
174
167
  }
175
- const startIndex = start + index, endIndex = startIndex + length, rootStr = String(root), nextChar = rootStr[endIndex], previousChar = rootStr[startIndex - 1], severity = length > 1 && !(char === '<' && (nowiki || !/[\s/>]/u.test(nextChar ?? ''))
168
+ const startIndex = start + index, endIndex = startIndex + length, rootStr = String(root), nextChar = rootStr[endIndex], previousChar = rootStr[startIndex - 1], severity = length > 1 && !(char === '<' && !/[\s/>]/u.test(nextChar ?? '')
176
169
  || isHtmlAttrVal && (char === '[' || char === ']'))
177
170
  || char === '{' && (nextChar === char || previousChar === '-')
178
171
  || char === '}' && (previousChar === char || nextChar === '-')
package/dist/src/arg.d.ts CHANGED
@@ -25,7 +25,7 @@ export declare abstract class ArgToken extends Token {
25
25
  /** @override */
26
26
  text(): string;
27
27
  /** @override */
28
- lint(start?: number): LintError[];
28
+ lint(start?: number, re?: RegExp): LintError[];
29
29
  /** @override */
30
30
  print(): string;
31
31
  /** @override */
package/dist/src/arg.js CHANGED
@@ -70,7 +70,7 @@ class ArgToken extends index_2.Token {
70
70
  return 1;
71
71
  }
72
72
  /** @override */
73
- lint(start = this.getAbsoluteIndex()) {
73
+ lint(start = this.getAbsoluteIndex(), re) {
74
74
  const { childNodes: [argName, argDefault, ...rest] } = this;
75
75
  if (!this.getAttribute('include')) {
76
76
  const e = (0, lint_1.generateForSelf)(this, { start }, 'no-arg', 'unexpected template argument');
@@ -82,9 +82,9 @@ class ArgToken extends index_2.Token {
82
82
  }
83
83
  return [e];
84
84
  }
85
- const errors = argName.lint(start + 3);
85
+ const errors = argName.lint(start + 3, re);
86
86
  if (argDefault) {
87
- errors.push(...argDefault.lint(start + 4 + String(argName).length));
87
+ errors.push(...argDefault.lint(start + 4 + String(argName).length, re));
88
88
  }
89
89
  if (rest.length > 0) {
90
90
  const rect = { start, ...this.getRootNode().posFromIndex(start) };
@@ -44,7 +44,7 @@ export declare abstract class AttributeToken extends Token {
44
44
  /** @override */
45
45
  text(): string;
46
46
  /** @override */
47
- lint(start?: number): LintError[];
47
+ lint(start?: number, re?: RegExp): LintError[];
48
48
  /** 获取属性值 */
49
49
  getValue(): string | true;
50
50
  /** @override */
@@ -341,8 +341,8 @@ let AttributeToken = (() => {
341
341
  return this.#equal ? this.#equal.length + (this.#quotes[0]?.length ?? 0) : 0;
342
342
  }
343
343
  /** @override */
344
- lint(start = this.getAbsoluteIndex()) {
345
- const errors = super.lint(start), { balanced, firstChild, lastChild, type, name, tag } = this, value = this.getValue();
344
+ lint(start = this.getAbsoluteIndex(), re) {
345
+ const errors = super.lint(start, re), { balanced, firstChild, lastChild, type, name, tag } = this, value = this.getValue();
346
346
  let rect;
347
347
  if (!balanced) {
348
348
  const root = this.getRootNode();
@@ -59,7 +59,7 @@ export declare abstract class AttributesToken extends Token {
59
59
  */
60
60
  getAttr(key: string): string | true | undefined;
61
61
  /** @override */
62
- lint(start?: number): LintError[];
62
+ lint(start?: number, re?: RegExp): LintError[];
63
63
  /** @override */
64
64
  print(): string;
65
65
  /** 清理无效属性 */
@@ -144,8 +144,8 @@ class AttributesToken extends index_2.Token {
144
144
  return this.getAttrToken(key)?.getValue();
145
145
  }
146
146
  /** @override */
147
- lint(start = this.getAbsoluteIndex()) {
148
- const errors = super.lint(start), { parentNode, length, childNodes } = this, attrs = new Map(), duplicated = new Set();
147
+ lint(start = this.getAbsoluteIndex(), re) {
148
+ const errors = super.lint(start, re), { parentNode, length, childNodes } = this, attrs = new Map(), duplicated = new Set();
149
149
  let rect;
150
150
  if (parentNode?.type === 'html' && parentNode.closing && this.text().trim()) {
151
151
  rect = { start, ...this.getRootNode().posFromIndex(start) };
@@ -34,7 +34,7 @@ export declare abstract class ConverterFlagsToken extends Token {
34
34
  /** 获取指定语言变体的转换标记 */
35
35
  getVariantFlags(): Set<string>;
36
36
  /** @override */
37
- lint(start?: number): LintError[];
37
+ lint(start?: number, re?: RegExp): LintError[];
38
38
  /** @override */
39
39
  print(): string;
40
40
  /** @override */
@@ -66,8 +66,8 @@ class ConverterFlagsToken extends index_2.Token {
66
66
  return new Set(this.#flags.filter(flag => variants.has(flag)));
67
67
  }
68
68
  /** @override */
69
- lint(start = this.getAbsoluteIndex()) {
70
- 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);
69
+ lint(start = this.getAbsoluteIndex(), re) {
70
+ 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);
71
71
  if (variantFlags.size === knownFlagCount || validFlags.size === knownFlagCount) {
72
72
  return errors;
73
73
  }
@@ -30,7 +30,7 @@ export declare abstract class ExtLinkToken extends Token {
30
30
  /** @override */
31
31
  text(): string;
32
32
  /** @override */
33
- lint(start?: number): LintError[];
33
+ lint(start?: number, re?: RegExp): LintError[];
34
34
  /** @override */
35
35
  print(): string;
36
36
  /** @override */
@@ -127,8 +127,8 @@ let ExtLinkToken = (() => {
127
127
  return this.#space.length;
128
128
  }
129
129
  /** @override */
130
- lint(start = this.getAbsoluteIndex()) {
131
- const errors = super.lint(start);
130
+ lint(start = this.getAbsoluteIndex(), re) {
131
+ const errors = super.lint(start, re);
132
132
  if (this.length === 1 && this.closest('heading-title')) {
133
133
  errors.push((0, lint_1.generateForSelf)(this, { start }, 'var-anchor', 'variable anchor in a section header'));
134
134
  }
@@ -31,7 +31,7 @@ export declare abstract class GalleryToken extends Token {
31
31
  /** @override */
32
32
  text(): string;
33
33
  /** @override */
34
- lint(start?: number): LintError[];
34
+ lint(start?: number, re?: RegExp): LintError[];
35
35
  /** @override */
36
36
  print(): string;
37
37
  /** @override */
@@ -61,7 +61,7 @@ class GalleryToken extends index_2.Token {
61
61
  return 1;
62
62
  }
63
63
  /** @override */
64
- lint(start = this.getAbsoluteIndex()) {
64
+ lint(start = this.getAbsoluteIndex(), re) {
65
65
  const { top, left } = this.getRootNode().posFromIndex(start), errors = [];
66
66
  for (let i = 0; i < this.length; i++) {
67
67
  const child = this.childNodes[i], str = String(child), { length } = str, trimmed = str.trim(), startLine = top + i, startCol = i ? 0 : left;
@@ -91,7 +91,7 @@ class GalleryToken extends index_2.Token {
91
91
  });
92
92
  }
93
93
  else if (child.type !== 'noinclude' && child.type !== 'text') {
94
- errors.push(...child.lint(start));
94
+ errors.push(...child.lint(start, re));
95
95
  }
96
96
  start += length + 1;
97
97
  }
@@ -30,7 +30,7 @@ export declare abstract class HeadingToken extends Token {
30
30
  /** @override */
31
31
  text(): string;
32
32
  /** @override */
33
- lint(start?: number): LintError[];
33
+ lint(start?: number, re?: RegExp): LintError[];
34
34
  /** @override */
35
35
  print(): string;
36
36
  /** @override */
@@ -124,8 +124,8 @@ let HeadingToken = (() => {
124
124
  return this.level;
125
125
  }
126
126
  /** @override */
127
- lint(start = this.getAbsoluteIndex()) {
128
- const errors = super.lint(start), { firstChild, level } = this, innerStr = String(firstChild), quotes = firstChild.childNodes.filter((node) => node.type === 'quote'), boldQuotes = quotes.filter(({ bold }) => bold), italicQuotes = quotes.filter(({ italic }) => italic);
127
+ lint(start = this.getAbsoluteIndex(), re) {
128
+ const errors = super.lint(start, re), { firstChild, level } = this, innerStr = String(firstChild), quotes = firstChild.childNodes.filter((node) => node.type === 'quote'), boldQuotes = quotes.filter(({ bold }) => bold), italicQuotes = quotes.filter(({ italic }) => italic);
129
129
  let rect;
130
130
  if (this.level === 1) {
131
131
  rect = { start, ...this.getRootNode().posFromIndex(start) };
@@ -37,7 +37,7 @@ export declare abstract class HtmlToken extends Token {
37
37
  /** @override */
38
38
  text(): string;
39
39
  /** @override */
40
- lint(start?: number): LintError[];
40
+ lint(start?: number, re?: RegExp): LintError[];
41
41
  /**
42
42
  * 搜索匹配的标签
43
43
  * @throws `SyntaxError` 同时闭合和自封闭的标签
package/dist/src/html.js CHANGED
@@ -177,8 +177,8 @@ let HtmlToken = (() => {
177
177
  : super.getAttribute(key);
178
178
  }
179
179
  /** @override */
180
- lint(start = this.getAbsoluteIndex()) {
181
- const errors = super.lint(start);
180
+ lint(start = this.getAbsoluteIndex(), re) {
181
+ const errors = super.lint(start, re);
182
182
  let refError;
183
183
  if (this.name === 'h1' && !this.closing) {
184
184
  refError = (0, lint_1.generateForSelf)(this, { start }, 'h1', '<h1>');
@@ -41,7 +41,7 @@ export declare abstract class ImageParameterToken extends Token {
41
41
  /** @override */
42
42
  text(): string;
43
43
  /** @override */
44
- lint(start?: number): LintError[];
44
+ lint(start?: number, re?: RegExp): LintError[];
45
45
  /** 获取参数值 */
46
46
  getValue(): string | true;
47
47
  /** @override */
@@ -171,8 +171,8 @@ class ImageParameterToken extends index_2.Token {
171
171
  : super.getAttribute(key);
172
172
  }
173
173
  /** @override */
174
- lint(start = this.getAbsoluteIndex()) {
175
- const errors = super.lint(start), { link, name } = this;
174
+ lint(start = this.getAbsoluteIndex(), re) {
175
+ const errors = super.lint(start, re), { link, name } = this;
176
176
  if (name === 'invalid') {
177
177
  const e = (0, lint_1.generateForSelf)(this, { start }, 'invalid-gallery', 'invalid gallery image parameter');
178
178
  e.fix = {
@@ -33,7 +33,7 @@ export declare abstract class ImagemapToken extends Token {
33
33
  /** @override */
34
34
  text(): string;
35
35
  /** @override */
36
- lint(start?: number): LintError[];
36
+ lint(start?: number, re?: RegExp): LintError[];
37
37
  /** @override */
38
38
  print(): string;
39
39
  /**
@@ -97,8 +97,8 @@ class ImagemapToken extends index_2.Token {
97
97
  return 1;
98
98
  }
99
99
  /** @override */
100
- lint(start = this.getAbsoluteIndex()) {
101
- const errors = super.lint(start), rect = { start, ...this.getRootNode().posFromIndex(start) };
100
+ lint(start = this.getAbsoluteIndex(), re) {
101
+ const errors = super.lint(start, re), rect = { start, ...this.getRootNode().posFromIndex(start) };
102
102
  if (this.image) {
103
103
  errors.push(...this.childNodes.filter(child => {
104
104
  const str = String(child).trim();
@@ -42,7 +42,7 @@ export declare class Token extends AstElement {
42
42
  */
43
43
  normalizeTitle(title: string, defaultNs?: number, halfParsed?: boolean, decode?: boolean, selfLink?: boolean): Title;
44
44
  /** @override */
45
- lint(start?: number): LintError[];
45
+ lint(start?: number, re?: RegExp): LintError[];
46
46
  /**
47
47
  * @override
48
48
  * @param i 移除位置
package/dist/src/index.js CHANGED
@@ -399,8 +399,8 @@ class Token extends element_1.AstElement {
399
399
  }
400
400
  /* NOT FOR BROWSER */
401
401
  /** @override */
402
- lint(start = this.getAbsoluteIndex()) {
403
- const errors = super.lint(start);
402
+ lint(start = this.getAbsoluteIndex(), re) {
403
+ const errors = super.lint(start, re);
404
404
  if (this.type === 'root') {
405
405
  const record = {};
406
406
  for (const cat of this.querySelectorAll('category')) {
@@ -32,7 +32,7 @@ export declare abstract class LinkBaseToken extends Token {
32
32
  /** @override */
33
33
  text(): string;
34
34
  /** @override */
35
- lint(start?: number): LintError[];
35
+ lint(start?: number, re?: RegExp): LintError[];
36
36
  /** @override */
37
37
  print(): string;
38
38
  /** @override */
@@ -130,8 +130,8 @@ class LinkBaseToken extends index_2.Token {
130
130
  return i === 0 ? this.#delimiter.length : 1;
131
131
  }
132
132
  /** @override */
133
- lint(start = this.getAbsoluteIndex()) {
134
- const errors = super.lint(start), { childNodes: [target, linkText], type: linkType } = this, { encoded, fragment } = this.#title;
133
+ lint(start = this.getAbsoluteIndex(), re) {
134
+ const errors = super.lint(start, re), { childNodes: [target, linkText], type: linkType } = this, { encoded, fragment } = this.#title;
135
135
  let rect;
136
136
  if (target.childNodes.some(({ type }) => type === 'template')) {
137
137
  rect = { start, ...this.getRootNode().posFromIndex(start) };
@@ -42,7 +42,7 @@ export declare abstract class FileToken extends LinkBaseToken {
42
42
  */
43
43
  constructor(link: string, text?: string, config?: Parser.Config, accum?: Token[], delimiter?: string);
44
44
  /** @override */
45
- lint(start?: number): LintError[];
45
+ lint(start?: number, re?: RegExp): LintError[];
46
46
  /** 获取所有图片参数节点 */
47
47
  getAllArgs(): ImageParameterToken[];
48
48
  /**
@@ -105,8 +105,8 @@ class FileToken extends base_1.LinkBaseToken {
105
105
  part => new imageParameter_1.ImageParameterToken(part, extension, config, accum)));
106
106
  }
107
107
  /** @override */
108
- lint(start = this.getAbsoluteIndex()) {
109
- const errors = super.lint(start), args = this.getAllArgs().filter(({ childNodes }) => {
108
+ lint(start = this.getAbsoluteIndex(), re) {
109
+ const errors = super.lint(start, re), args = this.getAllArgs().filter(({ childNodes }) => {
110
110
  const visibleNodes = childNodes.filter(node => node.text().trim());
111
111
  return visibleNodes.length !== 1 || visibleNodes[0].type !== 'arg';
112
112
  }), keys = [...new Set(args.map(({ name }) => name))].filter(key => key !== 'invalid'), frameKeys = keys.filter(key => frame.has(key)), horizAlignKeys = keys.filter(key => horizAlign.has(key)), vertAlignKeys = keys.filter(key => vertAlign.has(key));
@@ -19,7 +19,7 @@ export declare abstract class GalleryImageToken extends FileToken {
19
19
  */
20
20
  constructor(type: GalleryTypes, link: string, text?: string, config?: Parser.Config, accum?: Token[]);
21
21
  /** @override */
22
- lint(start?: number): LintError[];
22
+ lint(start?: number, re?: RegExp): LintError[];
23
23
  /**
24
24
  * @override
25
25
  * @param token 待插入的子节点
@@ -99,8 +99,8 @@ let GalleryImageToken = (() => {
99
99
  return key === 'padding' ? 0 : super.getAttribute(key);
100
100
  }
101
101
  /** @override */
102
- lint(start = this.getAbsoluteIndex()) {
103
- const errors = super.lint(start), { ns, interwiki } = this.getAttribute('title');
102
+ lint(start = this.getAbsoluteIndex(), re) {
103
+ const errors = super.lint(start, re), { ns, interwiki } = this.getAttribute('title');
104
104
  if (interwiki || ns !== 6) {
105
105
  errors.push((0, lint_1.generateForSelf)(this, { start }, 'invalid-gallery', 'invalid gallery image'));
106
106
  }
@@ -27,7 +27,7 @@ export declare abstract class LinkToken extends LinkBaseToken {
27
27
  /** @throws `RangeError` 非法的跨维基前缀 */
28
28
  set interwiki(interwiki: string);
29
29
  /** @override */
30
- lint(start?: number): LintError[];
30
+ lint(start?: number, re?: RegExp): LintError[];
31
31
  /** @override */
32
32
  setTarget(link: string): void;
33
33
  /**
@@ -48,8 +48,8 @@ class LinkToken extends base_1.LinkBaseToken {
48
48
  }
49
49
  /* NOT FOR BROWSER END */
50
50
  /** @override */
51
- lint(start = this.getAbsoluteIndex()) {
52
- const errors = super.lint(start);
51
+ lint(start = this.getAbsoluteIndex(), re) {
52
+ const errors = super.lint(start, re);
53
53
  if (this.closest('ext-link-text')) {
54
54
  errors.push((0, lint_1.generateForSelf)(this, { start }, 'nested-link', 'internal link in an external link'));
55
55
  }
@@ -32,7 +32,7 @@ export declare abstract class MagicLinkToken extends Token {
32
32
  */
33
33
  constructor(url?: string, doubleSlash?: boolean, config?: Parser.Config, accum?: Token[]);
34
34
  /** @override */
35
- lint(start?: number): LintError[];
35
+ lint(start?: number, re?: RegExp): LintError[];
36
36
  /** @override */
37
37
  cloneNode(): this;
38
38
  /**
@@ -102,8 +102,8 @@ let MagicLinkToken = (() => {
102
102
  this.setAttribute('pattern', new RegExp(`^(?:${config.protocol}${doubleSlash ? '|//' : ''})`, 'iu'));
103
103
  }
104
104
  /** @override */
105
- lint(start = this.getAbsoluteIndex()) {
106
- const errors = super.lint(start), source = `[,;。:!?()]+${this.type === 'ext-link-url' ? '|\\|+' : ''}`, regex = new RegExp(source, 'u'), regexGlobal = new RegExp(source, 'gu');
105
+ lint(start = this.getAbsoluteIndex(), re) {
106
+ const errors = super.lint(start, re), source = `[,;。:!?()]+${this.type === 'ext-link-url' ? '|\\|+' : ''}`, regex = new RegExp(source, 'u'), regexGlobal = new RegExp(source, 'gu');
107
107
  let rect;
108
108
  for (const child of this.childNodes) {
109
109
  const { type, data } = child;
@@ -31,7 +31,7 @@ export declare abstract class NestedToken extends Token {
31
31
  */
32
32
  constructor(wikitext: string | undefined, regex: RegExp, tags: readonly string[], config?: Parser.Config, accum?: Token[]);
33
33
  /** @override */
34
- lint(start?: number): LintError[];
34
+ lint(start?: number, re?: RegExp): LintError[];
35
35
  /**
36
36
  * @override
37
37
  * @param token 待插入的子节点
@@ -49,10 +49,10 @@ class NestedToken extends index_2.Token {
49
49
  this.#regex = regex;
50
50
  }
51
51
  /** @override */
52
- lint(start = this.getAbsoluteIndex()) {
52
+ lint(start = this.getAbsoluteIndex(), re) {
53
53
  let rect;
54
54
  return [
55
- ...super.lint(start),
55
+ ...super.lint(start, re),
56
56
  ...this.childNodes.filter(child => {
57
57
  if (child.type === 'ext' || child.type === 'comment') {
58
58
  return false;
@@ -20,7 +20,7 @@ class NowikiToken extends base_1.NowikiBaseToken {
20
20
  };
21
21
  return [e];
22
22
  }
23
- return super.lint(start);
23
+ return super.lint(start, new RegExp(`<\\s*(?:\\/\\s*)${name === 'nowiki' ? '' : '?'}(${name})\\b`, 'giu'));
24
24
  }
25
25
  }
26
26
  exports.NowikiToken = NowikiToken;
@@ -38,7 +38,7 @@ export declare abstract class ParameterToken extends Token {
38
38
  /** @override */
39
39
  text(): string;
40
40
  /** @override */
41
- lint(start?: number): LintError[];
41
+ lint(start?: number, re?: RegExp): LintError[];
42
42
  /** @override */
43
43
  print(): string;
44
44
  /** @override */
@@ -153,10 +153,10 @@ let ParameterToken = (() => {
153
153
  return this.anon ? 0 : 1;
154
154
  }
155
155
  /** @override */
156
- lint(start = this.getAbsoluteIndex()) {
156
+ lint(start = this.getAbsoluteIndex(), re) {
157
157
  // eslint-disable-next-line @typescript-eslint/no-unused-expressions
158
158
  /https?:\/\/(?:\[[\da-f:.]+\]|[^[\]<>"\t\n\p{Zs}])(?:[^[\]<>"\0\t\n\p{Zs}]|\0\d+c\x7F)*$/iu;
159
- const errors = super.lint(start), { firstChild } = this, link = new RegExp(`https?://${string_1.extUrlCharFirst}${string_1.extUrlChar}$`, 'iu').exec(firstChild.text())?.[0];
159
+ const errors = super.lint(start, re), { firstChild } = this, link = new RegExp(`https?://${string_1.extUrlCharFirst}${string_1.extUrlChar}$`, 'iu').exec(firstChild.text())?.[0];
160
160
  if (link && new URL(link).search) {
161
161
  const e = (0, lint_1.generateForChild)(firstChild, { start }, 'unescaped', 'unescaped query string in an anonymous parameter');
162
162
  e.startIndex = e.endIndex;
package/dist/src/pre.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import Parser from '../index';
2
2
  import { Token } from './index';
3
3
  import { NoincludeToken } from './nowiki/noinclude';
4
+ import type { LintError } from '../base';
4
5
  import type { AstText, AttributesToken, ExtToken, ConverterToken } from '../internal';
5
6
  /**
6
7
  * `<pre>`
@@ -24,5 +25,7 @@ export declare abstract class PreToken extends Token {
24
25
  /** @class */
25
26
  constructor(wikitext?: string, config?: Parser.Config, accum?: Token[]);
26
27
  /** @override */
28
+ lint(start?: number): LintError[];
29
+ /** @override */
27
30
  cloneNode(): this;
28
31
  }
package/dist/src/pre.js CHANGED
@@ -39,6 +39,10 @@ class PreToken extends index_2.Token {
39
39
  getAttribute(key) {
40
40
  return (key === 'plain') || super.getAttribute(key);
41
41
  }
42
+ /** @override */
43
+ lint(start = this.getAbsoluteIndex()) {
44
+ return super.lint(start, /<\s*\/\s*(pre)\b/giu);
45
+ }
42
46
  /* NOT FOR BROWSER */
43
47
  /** @override */
44
48
  cloneNode() {
@@ -34,7 +34,7 @@ export declare abstract class TableToken extends TrBaseToken {
34
34
  */
35
35
  constructor(syntax: string, attr?: string, config?: Parser.Config, accum?: Token[]);
36
36
  /** @override */
37
- lint(start?: number): LintError[];
37
+ lint(start?: number, re?: RegExp): LintError[];
38
38
  /**
39
39
  * 闭合表格语法
40
40
  * @param syntax 表格结尾语法
@@ -38,8 +38,8 @@ class TableToken extends trBase_1.TrBaseToken {
38
38
  });
39
39
  }
40
40
  /** @override */
41
- lint(start = this.getAbsoluteIndex()) {
42
- const errors = super.lint(start);
41
+ lint(start = this.getAbsoluteIndex(), re) {
42
+ const errors = super.lint(start, re);
43
43
  if (!this.closed) {
44
44
  errors.push((0, lint_1.generateForChild)(this.firstChild, { start }, 'unclosed-table', index_1.default.msg('unclosed $1', 'table')));
45
45
  }
@@ -45,7 +45,7 @@ export declare abstract class TdToken extends TableBaseToken {
45
45
  /** @override */
46
46
  text(): string;
47
47
  /** @override */
48
- lint(start?: number): LintError[];
48
+ lint(start?: number, re?: RegExp): LintError[];
49
49
  /** @override */
50
50
  print(): string;
51
51
  /** @override */
@@ -186,8 +186,8 @@ let TdToken = (() => {
186
186
  return 0;
187
187
  }
188
188
  /** @override */
189
- lint(start = this.getAbsoluteIndex()) {
190
- const errors = super.lint(start);
189
+ lint(start = this.getAbsoluteIndex(), re) {
190
+ const errors = super.lint(start, re);
191
191
  start += this.getRelativeIndex(this.length - 1);
192
192
  for (const child of this.lastChild.childNodes) {
193
193
  if (child.type === 'text') {
@@ -16,7 +16,7 @@ export declare abstract class TrBaseToken extends TableBaseToken {
16
16
  #private;
17
17
  type: 'table' | 'tr';
18
18
  /** @override */
19
- lint(start?: number): LintError[];
19
+ lint(start?: number, re?: RegExp): LintError[];
20
20
  /** @override */
21
21
  text(): string;
22
22
  /**
@@ -10,8 +10,8 @@ const td_1 = require("./td");
10
10
  /** 表格行或表格 */
11
11
  class TrBaseToken extends base_1.TableBaseToken {
12
12
  /** @override */
13
- lint(start = this.getAbsoluteIndex()) {
14
- const errors = super.lint(start), inter = this.childNodes.find(({ type }) => type === 'table-inter');
13
+ lint(start = this.getAbsoluteIndex(), re) {
14
+ const errors = super.lint(start, re), inter = this.childNodes.find(({ type }) => type === 'table-inter');
15
15
  if (!inter) {
16
16
  return errors;
17
17
  }
@@ -26,7 +26,7 @@ export declare abstract class ExtToken extends TagPairToken {
26
26
  */
27
27
  constructor(name: string, attr?: string, inner?: string, closed?: string, config?: Parser.Config, accum?: Token[]);
28
28
  /** @override */
29
- lint(start?: number): LintError[];
29
+ lint(start?: number, re?: RegExp): LintError[];
30
30
  /** @override */
31
31
  cloneNode(): this;
32
32
  }
@@ -172,8 +172,8 @@ let ExtToken = (() => {
172
172
  this.seal('closed', true);
173
173
  }
174
174
  /** @override */
175
- lint(start = this.getAbsoluteIndex()) {
176
- const errors = super.lint(start);
175
+ lint(start = this.getAbsoluteIndex(), re) {
176
+ const errors = super.lint(start, re);
177
177
  let rect;
178
178
  if (this.name !== 'nowiki' && this.closest('html-attrs, table-attrs')) {
179
179
  rect = { start, ...this.getRootNode().posFromIndex(start) };
@@ -38,7 +38,7 @@ export declare abstract class TranscludeToken extends Token {
38
38
  /** @override */
39
39
  text(): string;
40
40
  /** @override */
41
- lint(start?: number): LintError[];
41
+ lint(start?: number, re?: RegExp): LintError[];
42
42
  /**
43
43
  * @override
44
44
  * @param token 待插入的子节点
@@ -223,8 +223,8 @@ class TranscludeToken extends index_2.Token {
223
223
  return 1;
224
224
  }
225
225
  /** @override */
226
- lint(start = this.getAbsoluteIndex()) {
227
- const errors = super.lint(start), { type, childNodes, length } = this;
226
+ lint(start = this.getAbsoluteIndex(), re) {
227
+ const errors = super.lint(start, re), { type, childNodes, length } = this;
228
228
  let rect;
229
229
  if (!this.isTemplate()) {
230
230
  return errors;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wikiparser-node",
3
- "version": "1.5.3",
3
+ "version": "1.5.4",
4
4
  "description": "A Node.js parser for MediaWiki markup with AST",
5
5
  "keywords": [
6
6
  "mediawiki",