wikiparser-node 1.13.0 → 1.13.1-b

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 (176) hide show
  1. package/bundle/bundle.min.js +37 -0
  2. package/config/default.json +32 -41
  3. package/config/enwiki.json +17 -839
  4. package/config/llwiki.json +21 -56
  5. package/config/moegirl.json +21 -65
  6. package/config/zhwiki.json +32 -498
  7. package/extensions/dist/base.js +163 -0
  8. package/extensions/dist/codejar.js +53 -0
  9. package/extensions/dist/editor.js +159 -0
  10. package/extensions/dist/highlight.js +30 -0
  11. package/extensions/dist/lint.js +72 -0
  12. package/extensions/editor.css +59 -0
  13. package/extensions/ui.css +162 -0
  14. package/i18n/zh-hans.json +1 -0
  15. package/i18n/zh-hant.json +1 -0
  16. package/package.json +29 -22
  17. package/config/.schema.json +0 -203
  18. package/dist/addon/table.js +0 -494
  19. package/dist/addon/token.js +0 -392
  20. package/dist/addon/transclude.js +0 -184
  21. package/dist/base.d.ts +0 -109
  22. package/dist/base.js +0 -67
  23. package/dist/index.d.ts +0 -33
  24. package/dist/index.js +0 -279
  25. package/dist/internal.d.ts +0 -47
  26. package/dist/lib/element.d.ts +0 -125
  27. package/dist/lib/element.js +0 -364
  28. package/dist/lib/node.d.ts +0 -173
  29. package/dist/lib/node.js +0 -478
  30. package/dist/lib/range.d.ts +0 -105
  31. package/dist/lib/range.js +0 -406
  32. package/dist/lib/ranges.d.ts +0 -28
  33. package/dist/lib/ranges.js +0 -126
  34. package/dist/lib/rect.d.ts +0 -18
  35. package/dist/lib/rect.js +0 -36
  36. package/dist/lib/text.d.ts +0 -58
  37. package/dist/lib/text.js +0 -414
  38. package/dist/lib/title.d.ts +0 -49
  39. package/dist/lib/title.js +0 -251
  40. package/dist/mixin/attributesParent.d.ts +0 -49
  41. package/dist/mixin/attributesParent.js +0 -80
  42. package/dist/mixin/fixed.d.ts +0 -5
  43. package/dist/mixin/fixed.js +0 -32
  44. package/dist/mixin/flagsParent.d.ts +0 -43
  45. package/dist/mixin/flagsParent.js +0 -64
  46. package/dist/mixin/hidden.d.ts +0 -7
  47. package/dist/mixin/hidden.js +0 -39
  48. package/dist/mixin/magicLinkParent.d.ts +0 -19
  49. package/dist/mixin/magicLinkParent.js +0 -43
  50. package/dist/mixin/singleLine.d.ts +0 -5
  51. package/dist/mixin/singleLine.js +0 -25
  52. package/dist/mixin/sol.d.ts +0 -6
  53. package/dist/mixin/sol.js +0 -45
  54. package/dist/mixin/syntax.d.ts +0 -8
  55. package/dist/mixin/syntax.js +0 -46
  56. package/dist/parser/braces.js +0 -152
  57. package/dist/parser/commentAndExt.js +0 -84
  58. package/dist/parser/converter.js +0 -41
  59. package/dist/parser/externalLinks.js +0 -39
  60. package/dist/parser/hrAndDoubleUnderscore.js +0 -44
  61. package/dist/parser/html.js +0 -40
  62. package/dist/parser/links.js +0 -103
  63. package/dist/parser/list.js +0 -116
  64. package/dist/parser/magicLinks.js +0 -55
  65. package/dist/parser/quotes.js +0 -69
  66. package/dist/parser/redirect.js +0 -28
  67. package/dist/parser/selector.js +0 -443
  68. package/dist/parser/table.js +0 -125
  69. package/dist/src/arg.d.ts +0 -49
  70. package/dist/src/arg.js +0 -220
  71. package/dist/src/atom.d.ts +0 -14
  72. package/dist/src/atom.js +0 -54
  73. package/dist/src/attribute.d.ts +0 -64
  74. package/dist/src/attribute.js +0 -482
  75. package/dist/src/attributes.d.ts +0 -103
  76. package/dist/src/attributes.js +0 -383
  77. package/dist/src/converter.d.ts +0 -28
  78. package/dist/src/converter.js +0 -153
  79. package/dist/src/converterFlags.d.ts +0 -80
  80. package/dist/src/converterFlags.js +0 -241
  81. package/dist/src/converterRule.d.ts +0 -71
  82. package/dist/src/converterRule.js +0 -218
  83. package/dist/src/extLink.d.ts +0 -36
  84. package/dist/src/extLink.js +0 -223
  85. package/dist/src/gallery.d.ts +0 -51
  86. package/dist/src/gallery.js +0 -166
  87. package/dist/src/heading.d.ts +0 -44
  88. package/dist/src/heading.js +0 -222
  89. package/dist/src/hidden.d.ts +0 -9
  90. package/dist/src/hidden.js +0 -82
  91. package/dist/src/html.d.ts +0 -61
  92. package/dist/src/html.js +0 -344
  93. package/dist/src/imageParameter.d.ts +0 -60
  94. package/dist/src/imageParameter.js +0 -262
  95. package/dist/src/imagemap.d.ts +0 -47
  96. package/dist/src/imagemap.js +0 -148
  97. package/dist/src/imagemapLink.d.ts +0 -35
  98. package/dist/src/imagemapLink.js +0 -99
  99. package/dist/src/index.d.ts +0 -136
  100. package/dist/src/index.js +0 -790
  101. package/dist/src/link/base.d.ts +0 -52
  102. package/dist/src/link/base.js +0 -258
  103. package/dist/src/link/category.d.ts +0 -22
  104. package/dist/src/link/category.js +0 -36
  105. package/dist/src/link/file.d.ts +0 -102
  106. package/dist/src/link/file.js +0 -345
  107. package/dist/src/link/galleryImage.d.ts +0 -29
  108. package/dist/src/link/galleryImage.js +0 -133
  109. package/dist/src/link/index.d.ts +0 -39
  110. package/dist/src/link/index.js +0 -100
  111. package/dist/src/link/redirectTarget.d.ts +0 -27
  112. package/dist/src/link/redirectTarget.js +0 -71
  113. package/dist/src/magicLink.d.ts +0 -57
  114. package/dist/src/magicLink.js +0 -261
  115. package/dist/src/nested.d.ts +0 -40
  116. package/dist/src/nested.js +0 -108
  117. package/dist/src/nowiki/base.d.ts +0 -28
  118. package/dist/src/nowiki/base.js +0 -90
  119. package/dist/src/nowiki/comment.d.ts +0 -14
  120. package/dist/src/nowiki/comment.js +0 -123
  121. package/dist/src/nowiki/dd.d.ts +0 -8
  122. package/dist/src/nowiki/dd.js +0 -74
  123. package/dist/src/nowiki/doubleUnderscore.d.ts +0 -15
  124. package/dist/src/nowiki/doubleUnderscore.js +0 -101
  125. package/dist/src/nowiki/hr.d.ts +0 -5
  126. package/dist/src/nowiki/hr.js +0 -72
  127. package/dist/src/nowiki/index.d.ts +0 -14
  128. package/dist/src/nowiki/index.js +0 -30
  129. package/dist/src/nowiki/list.d.ts +0 -5
  130. package/dist/src/nowiki/list.js +0 -67
  131. package/dist/src/nowiki/listBase.d.ts +0 -23
  132. package/dist/src/nowiki/listBase.js +0 -100
  133. package/dist/src/nowiki/noinclude.d.ts +0 -6
  134. package/dist/src/nowiki/noinclude.js +0 -77
  135. package/dist/src/nowiki/quote.d.ts +0 -14
  136. package/dist/src/nowiki/quote.js +0 -149
  137. package/dist/src/onlyinclude.d.ts +0 -13
  138. package/dist/src/onlyinclude.js +0 -60
  139. package/dist/src/paramTag/index.d.ts +0 -28
  140. package/dist/src/paramTag/index.js +0 -80
  141. package/dist/src/paramTag/inputbox.d.ts +0 -8
  142. package/dist/src/paramTag/inputbox.js +0 -24
  143. package/dist/src/parameter.d.ts +0 -60
  144. package/dist/src/parameter.js +0 -267
  145. package/dist/src/pre.d.ts +0 -28
  146. package/dist/src/pre.js +0 -62
  147. package/dist/src/redirect.d.ts +0 -30
  148. package/dist/src/redirect.js +0 -128
  149. package/dist/src/syntax.d.ts +0 -15
  150. package/dist/src/syntax.js +0 -87
  151. package/dist/src/table/base.d.ts +0 -28
  152. package/dist/src/table/base.js +0 -81
  153. package/dist/src/table/index.d.ts +0 -230
  154. package/dist/src/table/index.js +0 -506
  155. package/dist/src/table/td.d.ts +0 -72
  156. package/dist/src/table/td.js +0 -375
  157. package/dist/src/table/tr.d.ts +0 -30
  158. package/dist/src/table/tr.js +0 -61
  159. package/dist/src/table/trBase.d.ts +0 -49
  160. package/dist/src/table/trBase.js +0 -165
  161. package/dist/src/tagPair/ext.d.ts +0 -29
  162. package/dist/src/tagPair/ext.js +0 -229
  163. package/dist/src/tagPair/include.d.ts +0 -33
  164. package/dist/src/tagPair/include.js +0 -132
  165. package/dist/src/tagPair/index.d.ts +0 -23
  166. package/dist/src/tagPair/index.js +0 -130
  167. package/dist/src/transclude.d.ts +0 -159
  168. package/dist/src/transclude.js +0 -598
  169. package/dist/util/constants.js +0 -26
  170. package/dist/util/debug.js +0 -95
  171. package/dist/util/diff.js +0 -83
  172. package/dist/util/html.js +0 -146
  173. package/dist/util/lint.js +0 -32
  174. package/dist/util/string.js +0 -107
  175. package/errors/README +0 -3
  176. package/printed/README +0 -3
@@ -1,383 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AttributesToken = void 0;
4
- const lint_1 = require("../util/lint");
5
- const string_1 = require("../util/string");
6
- const rect_1 = require("../lib/rect");
7
- const index_1 = require("../index");
8
- const index_2 = require("./index");
9
- const atom_1 = require("./atom");
10
- const attribute_1 = require("./attribute");
11
- /* NOT FOR BROWSER */
12
- const html_1 = require("../util/html");
13
- const debug_1 = require("../util/debug");
14
- const constants_1 = require("../util/constants");
15
- const stages = { 'ext-attrs': 0, 'html-attrs': 2, 'table-attrs': 3 };
16
- /**
17
- * 将属性类型转换为单属性类型
18
- * @param type 属性类型
19
- */
20
- const toAttributeType = (type) => type.slice(0, -1);
21
- /**
22
- * 将属性类型转换为无效属性类型
23
- * @param type 属性类型
24
- */
25
- const toDirty = (type) => `${toAttributeType(type)}-dirty`;
26
- /**
27
- * 扩展和HTML标签属性
28
- * @classdesc `{childNodes: ...AtomToken|AttributeToken}`
29
- */
30
- class AttributesToken extends index_2.Token {
31
- #type;
32
- #classList;
33
- /* NOT FOR BROWSER END */
34
- get type() {
35
- return this.#type;
36
- }
37
- /* NOT FOR BROWSER */
38
- /** getAttrs()方法的getter写法 */
39
- get attributes() {
40
- return this.getAttrs();
41
- }
42
- set attributes(attrs) {
43
- this.replaceChildren();
44
- this.setAttr(attrs);
45
- }
46
- /** 以字符串表示的class属性 */
47
- get className() {
48
- const attr = this.getAttr('class');
49
- return typeof attr === 'string' ? attr : '';
50
- }
51
- set className(className) {
52
- this.setAttr('class', className || false);
53
- }
54
- /** 以Set表示的class属性 */
55
- get classList() {
56
- if (!this.#classList) {
57
- this.#classList = new Set(this.className.split(/\s/u));
58
- /**
59
- * 更新classList
60
- * @param prop 方法名
61
- */
62
- const factory = (prop) => ({
63
- value: /** @ignore */ (...args) => {
64
- const result = Set.prototype[prop].apply(this.#classList, args);
65
- this.setAttr('class', [...this.#classList].join(' '));
66
- return result;
67
- },
68
- });
69
- Object.defineProperties(this.#classList, {
70
- add: factory('add'),
71
- delete: factory('delete'),
72
- clear: factory('clear'),
73
- });
74
- }
75
- return this.#classList;
76
- }
77
- /** id属性 */
78
- get id() {
79
- const attr = this.getAttr('id');
80
- return typeof attr === 'string' ? attr : '';
81
- }
82
- set id(id) {
83
- this.setAttr('id', id || false);
84
- }
85
- /** 是否含有无效属性 */
86
- get sanitized() {
87
- return this.childNodes.filter(child => child instanceof atom_1.AtomToken && child.text().trim()).length === 0;
88
- }
89
- set sanitized(sanitized) {
90
- if (sanitized) {
91
- this.sanitize();
92
- }
93
- }
94
- /* NOT FOR BROWSER END */
95
- /**
96
- * @param attr 标签属性
97
- * @param type 标签类型
98
- * @param name 标签名
99
- */
100
- constructor(attr, type, name, config = index_1.default.getConfig(), accum = []) {
101
- super(undefined, config, accum, {
102
- AtomToken: ':', AttributeToken: ':',
103
- });
104
- this.#type = type;
105
- this.setAttribute('name', name);
106
- if (attr) {
107
- const regex = /([^\s/](?:(?!\0\d+~\x7F)[^\s/=])*)(?:((?:\s(?:\s|\0\d+[cn]\x7F)*)?(?:=|\0\d+~\x7F)(?:\s|\0\d+[cn]\x7F)*)(?:(["'])(.*?)(\3|$)|(\S*)))?/gsu;
108
- let out = '', mt = regex.exec(attr), lastIndex = 0;
109
- const insertDirty = /** 插入无效属性 */ () => {
110
- if (out) {
111
- super.insertAt(new atom_1.AtomToken(out, toDirty(type), config, accum, {
112
- [`Stage-${stages[type]}`]: ':',
113
- }));
114
- out = '';
115
- }
116
- };
117
- while (mt) {
118
- const { index, 0: full, 1: key, 2: equal, 3: quoteStart, 4: quoted, 5: quoteEnd, 6: unquoted } = mt;
119
- out += attr.slice(lastIndex, index);
120
- if (/^(?:[\w:]|\0\d+t\x7F)(?:[\w:.-]|\0\d+t\x7F)*$/u.test((0, string_1.removeComment)(key).trim())) {
121
- const value = quoted ?? unquoted, quotes = [quoteStart, quoteEnd],
122
- // @ts-expect-error abstract class
123
- token = new attribute_1.AttributeToken(toAttributeType(type), name, key, equal, value, quotes, config, accum);
124
- insertDirty();
125
- super.insertAt(token);
126
- }
127
- else {
128
- out += full;
129
- }
130
- ({ lastIndex } = regex);
131
- mt = regex.exec(attr);
132
- }
133
- out += attr.slice(lastIndex);
134
- insertDirty();
135
- }
136
- }
137
- /** @private */
138
- afterBuild() {
139
- const { parentNode } = this;
140
- if (parentNode?.type === 'td' && parentNode.subtype === 'caption') {
141
- this.setAttribute('name', 'caption');
142
- }
143
- super.afterBuild();
144
- }
145
- /**
146
- * 所有指定属性名的AttributeToken
147
- * @param key 属性名
148
- */
149
- getAttrTokens(key) {
150
- return this.childNodes.filter((child) => child instanceof attribute_1.AttributeToken && (!key || child.name === key.toLowerCase().trim()));
151
- }
152
- /**
153
- * 指定属性名的最后一个AttributeToken
154
- * @param key 属性名
155
- */
156
- getAttrToken(key) {
157
- const tokens = this.getAttrTokens(key);
158
- return tokens[tokens.length - 1];
159
- }
160
- /**
161
- * 获取指定属性
162
- * @param key 属性键
163
- */
164
- getAttr(key) {
165
- return this.getAttrToken(key)?.getValue();
166
- }
167
- /** @private */
168
- lint(start = this.getAbsoluteIndex(), re) {
169
- const errors = super.lint(start, re), { parentNode, childNodes } = this, attrs = new Map(), duplicated = new Set(), rect = new rect_1.BoundingRect(this, start);
170
- if (parentNode?.type === 'html' && parentNode.closing && this.text().trim()) {
171
- const e = (0, lint_1.generateForSelf)(this, rect, 'no-ignored', 'attributes of a closing tag');
172
- e.fix = { range: [start, e.endIndex], text: '' };
173
- errors.push(e);
174
- }
175
- for (const attr of childNodes) {
176
- if (attr instanceof attribute_1.AttributeToken) {
177
- const { name } = attr;
178
- if (attrs.has(name)) {
179
- duplicated.add(name);
180
- attrs.get(name).push(attr);
181
- }
182
- else {
183
- attrs.set(name, [attr]);
184
- }
185
- }
186
- else {
187
- const str = attr.text().trim();
188
- if (str) {
189
- const e = (0, lint_1.generateForChild)(attr, rect, 'no-ignored', 'containing invalid attribute', /[\p{L}\d]/u.test(str) ? 'error' : 'warning');
190
- e.suggestions = [
191
- {
192
- desc: 'remove',
193
- range: [e.startIndex, e.endIndex],
194
- text: ' ',
195
- },
196
- ];
197
- errors.push(e);
198
- }
199
- }
200
- }
201
- if (duplicated.size > 0) {
202
- for (const key of duplicated) {
203
- errors.push(...attrs.get(key).map(attr => (0, lint_1.generateForChild)(attr, rect, 'no-duplicate', index_1.default.msg('duplicated $1 attribute', key))));
204
- }
205
- }
206
- return errors;
207
- }
208
- /** @private */
209
- print() {
210
- return this.toString()
211
- ? `<span class="wpb-${this.type}">${this.childNodes.map(child => child.print(child instanceof atom_1.AtomToken ? { class: child.toString().trim() && 'attr-dirty' } : undefined)).join('')}</span>`
212
- : '';
213
- }
214
- /* NOT FOR BROWSER */
215
- /** 清理无效属性 */
216
- sanitize() {
217
- let dirty = false;
218
- for (let i = this.length - 1; i >= 0; i--) {
219
- const child = this.childNodes[i];
220
- if (child instanceof atom_1.AtomToken && child.text().trim()) {
221
- dirty = true;
222
- this.removeAt(i);
223
- }
224
- }
225
- if (!debug_1.Shadow.running && dirty) {
226
- index_1.default.warn('AttributesToken.sanitize will remove invalid attributes!');
227
- }
228
- }
229
- cloneNode() {
230
- const cloned = this.cloneChildNodes();
231
- return debug_1.Shadow.run(() => {
232
- // @ts-expect-error abstract class
233
- const token = new AttributesToken(undefined, this.type, this.name, this.getAttribute('config'));
234
- token.append(...cloned);
235
- return token;
236
- });
237
- }
238
- /**
239
- * @override
240
- * @param token 待插入的子节点
241
- * @param i 插入位置
242
- * @throws `RangeError` 标签不匹配
243
- */
244
- insertAt(token, i = this.length) {
245
- if (!(token instanceof attribute_1.AttributeToken)) {
246
- if (!debug_1.Shadow.running && token.toString().trim()) {
247
- this.constructorError('can only insert AttributeToken');
248
- }
249
- return super.insertAt(token, i);
250
- }
251
- else if (token.type !== this.type.slice(0, -1) || token.tag !== this.name) {
252
- throw new RangeError(`The AttributeToken to be inserted can only be used for <${token.tag}> tag!`);
253
- }
254
- else if (i === this.length) {
255
- const { lastChild } = this;
256
- if (lastChild instanceof attribute_1.AttributeToken) {
257
- lastChild.close();
258
- }
259
- }
260
- else {
261
- token.close();
262
- }
263
- if (this.closest('parameter')) {
264
- token.escape();
265
- }
266
- super.insertAt(token, i);
267
- const { previousVisibleSibling, nextVisibleSibling } = token, type = toDirty(this.type), config = this.getAttribute('config'), acceptable = { [`Stage-${stages[this.type]}`]: ':' };
268
- if (nextVisibleSibling && !/^\s/u.test(nextVisibleSibling.toString())) {
269
- super.insertAt(debug_1.Shadow.run(() => new atom_1.AtomToken(' ', type, config, [], acceptable)), i + 1);
270
- }
271
- if (previousVisibleSibling && !/\s$/u.test(previousVisibleSibling.toString())) {
272
- super.insertAt(debug_1.Shadow.run(() => new atom_1.AtomToken(' ', type, config, [], acceptable)), i);
273
- }
274
- return token;
275
- }
276
- setAttr(keyOrProp, value) {
277
- if (typeof keyOrProp !== 'string') {
278
- for (const [key, val] of Object.entries(keyOrProp)) {
279
- this.setAttr(key, val);
280
- }
281
- return;
282
- }
283
- else if (this.type === 'ext-attrs' && typeof value === 'string' && value.includes('>')) {
284
- throw new RangeError('Attributes of an extension tag cannot contain ">"!');
285
- }
286
- const key = keyOrProp.toLowerCase().trim(), attr = this.getAttrToken(key);
287
- if (attr) {
288
- attr.setValue(value);
289
- return;
290
- }
291
- else if (value === false) {
292
- return;
293
- }
294
- // @ts-expect-error abstract class
295
- const token = debug_1.Shadow.run(() => new attribute_1.AttributeToken(toAttributeType(this.type), this.name, key, value === true ? '' : '=', value === true ? '' : value, ['"', '"'], this.getAttribute('config')));
296
- this.insertAt(token);
297
- }
298
- /**
299
- * 标签是否具有某属性
300
- * @param key 属性键
301
- */
302
- hasAttr(key) {
303
- return this.getAttrTokens(key).length > 0;
304
- }
305
- /** 获取全部的属性名 */
306
- getAttrNames() {
307
- return new Set(this.getAttrTokens().map(({ name }) => name));
308
- }
309
- /** 获取全部属性 */
310
- getAttrs() {
311
- return Object.fromEntries(this.getAttrTokens().map(({ name, value }) => [name, value]));
312
- }
313
- /**
314
- * 移除指定属性
315
- * @param key 属性键
316
- */
317
- removeAttr(key) {
318
- for (const attr of this.getAttrTokens(key)) {
319
- attr.remove();
320
- }
321
- }
322
- /**
323
- * 开关指定属性
324
- * @param key 属性键
325
- * @param force 强制开启或关闭
326
- * @throws `RangeError` 不为Boolean类型的属性值
327
- */
328
- toggleAttr(key, force) {
329
- key = key.toLowerCase().trim();
330
- const attr = this.getAttrToken(key);
331
- if (attr && attr.getValue() !== true) {
332
- throw new RangeError(`${key} attribute is not Boolean!`);
333
- }
334
- else if (attr) {
335
- attr.setValue(force === true);
336
- }
337
- else if (force !== false) {
338
- this.setAttr(key, true);
339
- }
340
- }
341
- /**
342
- * 生成引导空格
343
- * @param str 属性字符串
344
- */
345
- #leadingSpace(str) {
346
- const { type } = this, leadingRegex = { 'ext-attrs': /^\s/u, 'html-attrs': /^[/\s]/u };
347
- return str && type !== 'table-attrs' && !leadingRegex[type].test(str) ? ' ' : '';
348
- }
349
- /** @private */
350
- toString(skip) {
351
- if (this.type === 'table-attrs') {
352
- (0, string_1.normalizeSpace)(this);
353
- }
354
- const str = super.toString(skip);
355
- return this.#leadingSpace(str) + str;
356
- }
357
- /** @private */
358
- getAttribute(key) {
359
- return key === 'padding'
360
- ? this.#leadingSpace(super.toString()).length
361
- : super.getAttribute(key);
362
- }
363
- /** @private */
364
- text() {
365
- if (this.type === 'table-attrs') {
366
- (0, string_1.normalizeSpace)(this);
367
- }
368
- const str = (0, string_1.text)(this.childNodes.filter(child => child instanceof attribute_1.AttributeToken), ' ');
369
- return this.#leadingSpace(str) + str;
370
- }
371
- /** @private */
372
- toHtmlInternal() {
373
- const map = new Map();
374
- for (const child of this.childNodes) {
375
- if (child instanceof attribute_1.AttributeToken) {
376
- map.set(child.name, child);
377
- }
378
- }
379
- return ` ${(0, html_1.html)([...map.values()], ' ')}`;
380
- }
381
- }
382
- exports.AttributesToken = AttributesToken;
383
- constants_1.classes['AttributesToken'] = __filename;
@@ -1,28 +0,0 @@
1
- import Parser from '../index';
2
- import { Token } from './index';
3
- import { ConverterFlagsToken } from './converterFlags';
4
- import { ConverterRuleToken } from './converterRule';
5
- import type { FlagsParentBase } from '../mixin/flagsParent';
6
- export interface ConverterToken extends FlagsParentBase {
7
- }
8
- /**
9
- * 转换
10
- * @classdesc `{childNodes: [ConverterFlagsToken, ...ConverterRuleToken]}`
11
- */
12
- export declare abstract class ConverterToken extends Token {
13
- readonly childNodes: readonly [ConverterFlagsToken, ConverterRuleToken, ...ConverterRuleToken[]];
14
- abstract get firstChild(): ConverterFlagsToken;
15
- abstract get lastChild(): ConverterFlagsToken | ConverterRuleToken;
16
- abstract get children(): [ConverterFlagsToken, ConverterRuleToken, ...ConverterRuleToken[]];
17
- abstract get firstElementChild(): ConverterFlagsToken;
18
- abstract get lastElementChild(): ConverterFlagsToken | ConverterRuleToken;
19
- get type(): 'converter';
20
- /** 是否不转换 */
21
- get noConvert(): boolean;
22
- /**
23
- * @param flags 转换类型标记
24
- * @param rules 转换规则
25
- */
26
- constructor(flags: readonly string[], rules: readonly [string, ...string[]], config?: Parser.Config, accum?: Token[]);
27
- cloneNode(): this;
28
- }
@@ -1,153 +0,0 @@
1
- "use strict";
2
- var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
3
- function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
4
- var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
5
- var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
6
- var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
7
- var _, done = false;
8
- for (var i = decorators.length - 1; i >= 0; i--) {
9
- var context = {};
10
- for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
11
- for (var p in contextIn.access) context.access[p] = contextIn.access[p];
12
- context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
13
- var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
14
- if (kind === "accessor") {
15
- if (result === void 0) continue;
16
- if (result === null || typeof result !== "object") throw new TypeError("Object expected");
17
- if (_ = accept(result.get)) descriptor.get = _;
18
- if (_ = accept(result.set)) descriptor.set = _;
19
- if (_ = accept(result.init)) initializers.unshift(_);
20
- }
21
- else if (_ = accept(result)) {
22
- if (kind === "field") initializers.unshift(_);
23
- else descriptor[key] = _;
24
- }
25
- }
26
- if (target) Object.defineProperty(target, contextIn.name, descriptor);
27
- done = true;
28
- };
29
- var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
30
- var useValue = arguments.length > 2;
31
- for (var i = 0; i < initializers.length; i++) {
32
- value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
33
- }
34
- return useValue ? value : void 0;
35
- };
36
- Object.defineProperty(exports, "__esModule", { value: true });
37
- exports.ConverterToken = void 0;
38
- const string_1 = require("../util/string");
39
- const index_1 = require("../index");
40
- const index_2 = require("./index");
41
- const converterFlags_1 = require("./converterFlags");
42
- const converterRule_1 = require("./converterRule");
43
- /* NOT FOR BROWSER */
44
- const html_1 = require("../util/html");
45
- const debug_1 = require("../util/debug");
46
- const constants_1 = require("../util/constants");
47
- const flagsParent_1 = require("../mixin/flagsParent");
48
- /* NOT FOR BROWSER END */
49
- /**
50
- * 转换
51
- * @classdesc `{childNodes: [ConverterFlagsToken, ...ConverterRuleToken]}`
52
- */
53
- let ConverterToken = (() => {
54
- let _classDecorators = [flagsParent_1.flagsParent];
55
- let _classDescriptor;
56
- let _classExtraInitializers = [];
57
- let _classThis;
58
- let _classSuper = index_2.Token;
59
- var ConverterToken = class extends _classSuper {
60
- static { _classThis = this; }
61
- static {
62
- const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
63
- __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
64
- ConverterToken = _classThis = _classDescriptor.value;
65
- if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
66
- __runInitializers(_classThis, _classExtraInitializers);
67
- }
68
- /* NOT FOR BROWSER END */
69
- get type() {
70
- return 'converter';
71
- }
72
- /* NOT FOR BROWSER */
73
- /** 是否不转换 */
74
- get noConvert() {
75
- return this.hasFlag('R') || this.length === 2 && this.lastChild.length === 1;
76
- }
77
- /* NOT FOR BROWSER END */
78
- /**
79
- * @param flags 转换类型标记
80
- * @param rules 转换规则
81
- */
82
- constructor(flags, rules, config = index_1.default.getConfig(), accum = []) {
83
- super(undefined, config, accum);
84
- // @ts-expect-error abstract class
85
- this.append(new converterFlags_1.ConverterFlagsToken(flags, config, accum));
86
- const [firstRule] = rules, hasColon = firstRule.includes(':'),
87
- // @ts-expect-error abstract class
88
- firstRuleToken = new converterRule_1.ConverterRuleToken(firstRule, hasColon, config, accum);
89
- if (hasColon && firstRuleToken.length === 1
90
- || !hasColon && rules.length === 2 && !(0, string_1.removeComment)(rules[1]).trim()) {
91
- // @ts-expect-error abstract class
92
- this.insertAt(new converterRule_1.ConverterRuleToken(rules.join(';'), false, config, accum));
93
- }
94
- else {
95
- this.append(firstRuleToken,
96
- // @ts-expect-error abstract class
97
- ...rules.slice(1).map(rule => new converterRule_1.ConverterRuleToken(rule, true, config, accum)));
98
- }
99
- /* NOT FOR BROWSER */
100
- this.protectChildren(0);
101
- }
102
- /** @private */
103
- toString(skip) {
104
- const { childNodes: [flags, ...rules] } = this;
105
- return `-{${flags.toString(skip)}${flags.length > 0 ? '|' : ''}${rules.map(rule => rule.toString(skip)).join(';')}}-`;
106
- }
107
- /** @private */
108
- text() {
109
- const { childNodes: [flags, ...rules] } = this;
110
- return `-{${flags.text()}|${(0, string_1.text)(rules, ';')}}-`;
111
- }
112
- /** @private */
113
- getAttribute(key) {
114
- return key === 'padding' ? 2 : super.getAttribute(key);
115
- }
116
- /** @private */
117
- getGaps(i) {
118
- return i || this.firstChild.length > 0 ? 1 : 0;
119
- }
120
- /** @private */
121
- print() {
122
- const { childNodes: [flags, ...rules] } = this;
123
- return `<span class="wpb-converter">-{${flags.print()}${flags.length > 0 ? '|' : ''}${(0, string_1.print)(rules, { sep: ';' })}}-</span>`;
124
- }
125
- /* NOT FOR BROWSER */
126
- cloneNode() {
127
- const [flags, ...rules] = this.cloneChildNodes();
128
- return debug_1.Shadow.run(() => {
129
- // @ts-expect-error abstract class
130
- const token = new ConverterToken([], [''], this.getAttribute('config'));
131
- token.firstChild.safeReplaceWith(flags);
132
- token.removeAt(1);
133
- token.append(...rules);
134
- return token;
135
- });
136
- }
137
- /** @private */
138
- toHtmlInternal(nowrap, nocc) {
139
- const flags = this.getEffectiveFlags(), { childNodes: [, ...rules] } = this;
140
- if (nocc || flags.has('R') || this.getVariantFlags().size > 0) {
141
- return (0, html_1.font)(this, (nocc ? '-{' : '') + (0, html_1.html)(rules, ';', nowrap, nocc) + (nocc ? '}-' : ''));
142
- }
143
- else if (flags.has('S')) {
144
- return (0, html_1.font)(this, rules.find(({ variant }) => variant)?.lastChild.toHtmlInternal(nowrap).trim()
145
- ?? rules[0].lastChild.toHtmlInternal(nowrap));
146
- }
147
- return '';
148
- }
149
- };
150
- return ConverterToken = _classThis;
151
- })();
152
- exports.ConverterToken = ConverterToken;
153
- constants_1.classes['ConverterToken'] = __filename;
@@ -1,80 +0,0 @@
1
- import Parser from '../index';
2
- import { Token } from './index';
3
- import { AtomToken } from './atom';
4
- import type { LintError } from '../base';
5
- import type { ConverterToken, ConverterRuleToken } from '../internal';
6
- /**
7
- * 转换flags
8
- * @classdesc `{childNodes: ...AtomToken}`
9
- */
10
- export declare abstract class ConverterFlagsToken extends Token {
11
- #private;
12
- readonly childNodes: readonly AtomToken[];
13
- abstract get firstChild(): AtomToken | undefined;
14
- abstract get lastChild(): AtomToken | undefined;
15
- abstract get parentNode(): ConverterToken | undefined;
16
- abstract get previousSibling(): undefined;
17
- abstract get nextSibling(): ConverterRuleToken | undefined;
18
- abstract get children(): AtomToken[];
19
- abstract get firstElementChild(): AtomToken | undefined;
20
- abstract get lastElementChild(): AtomToken | undefined;
21
- abstract get parentElement(): ConverterToken | undefined;
22
- abstract get previousElementSibling(): undefined;
23
- abstract get nextElementSibling(): ConverterRuleToken | undefined;
24
- get type(): 'converter-flags';
25
- /** 所有转换类型标记 */
26
- get flags(): Set<string>;
27
- set flags(value: Set<string>);
28
- /** @param flags 转换类型标记 */
29
- constructor(flags: readonly string[], config?: Parser.Config, accum?: Token[]);
30
- /** 获取未知的转换类型标记 */
31
- getUnknownFlags(): Set<string>;
32
- /** 获取指定语言变体的转换标记 */
33
- getVariantFlags(): Set<string>;
34
- cloneNode(): this;
35
- /**
36
- * @override
37
- * @param i 移除位置
38
- */
39
- removeAt(i: number): AtomToken;
40
- /**
41
- * @override
42
- * @param token 待插入的子节点
43
- * @param i 插入位置
44
- */
45
- insertAt<T extends AtomToken>(token: T, i?: number): T;
46
- /** 获取所有转换类型标记 */
47
- getAllFlags(): Set<string>;
48
- /**
49
- * 获取转换类型标记节点
50
- * @param flag 转换类型标记
51
- */
52
- getFlagTokens(flag: string): AtomToken[];
53
- /** 获取有效的转换类型标记 */
54
- getEffectiveFlags(): Set<string>;
55
- /**
56
- * 是否具有某转换类型标记
57
- * @param flag 转换类型标记
58
- */
59
- hasFlag(flag: string): boolean;
60
- /**
61
- * 是否具有某有效的转换类型标记
62
- * @param flag 转换类型标记
63
- */
64
- hasEffectiveFlag(flag: string): boolean;
65
- /**
66
- * 移除某转换类型标记
67
- * @param flag 转换类型标记
68
- */
69
- removeFlag(flag: string): void;
70
- /**
71
- * 设置转换类型标记
72
- * @param flag 转换类型标记
73
- */
74
- setFlag(flag: string): void;
75
- /**
76
- * 开关转换类型标记
77
- * @param flag 转换类型标记
78
- */
79
- toggleFlag(flag: string): void;
80
- }