@markuplint/ml-core 3.0.0-alpha.66 → 3.0.0-dev.176
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -3
- package/lib/configs.browser.d.ts +2 -0
- package/lib/configs.browser.js +12 -0
- package/lib/configs.js +4 -1
- package/lib/index.d.ts +11 -1
- package/lib/ml-core.d.ts +24 -13
- package/lib/ml-core.js +16 -10
- package/lib/ml-dom/helper/accname.d.ts +2 -1
- package/lib/ml-dom/helper/accname.js +62 -2
- package/lib/ml-dom/helper/create-node.d.ts +7 -3
- package/lib/ml-dom/helper/create-node.js +4 -2
- package/lib/ml-dom/helper/debug.js +10 -5
- package/lib/ml-dom/helper/getIndent.d.ts +7 -7
- package/lib/ml-dom/helper/getIndent.js +18 -12
- package/lib/ml-dom/helper/walkers.d.ts +15 -5
- package/lib/ml-dom/helper/walkers.js +22 -16
- package/lib/ml-dom/index.d.ts +1 -0
- package/lib/ml-dom/manipulations/child-node-methods.d.ts +20 -7
- package/lib/ml-dom/manipulations/child-node-methods.js +24 -6
- package/lib/ml-dom/manipulations/get-children.d.ts +4 -2
- package/lib/ml-dom/manipulations/get-children.js +3 -1
- package/lib/ml-dom/node/attr.d.ts +94 -91
- package/lib/ml-dom/node/attr.js +26 -16
- package/lib/ml-dom/node/block.d.ts +36 -32
- package/lib/ml-dom/node/block.js +14 -4
- package/lib/ml-dom/node/character-data.d.ts +61 -54
- package/lib/ml-dom/node/character-data.js +9 -3
- package/lib/ml-dom/node/child-node.d.ts +10 -3
- package/lib/ml-dom/node/child-node.js +3 -1
- package/lib/ml-dom/node/comment.d.ts +16 -13
- package/lib/ml-dom/node/document-fragment.d.ts +24 -21
- package/lib/ml-dom/node/document-type.d.ts +35 -32
- package/lib/ml-dom/node/document-type.js +14 -4
- package/lib/ml-dom/node/document.d.ts +1608 -1545
- package/lib/ml-dom/node/document.js +125 -33
- package/lib/ml-dom/node/dom-token-list.d.ts +27 -27
- package/lib/ml-dom/node/dom-token-list.js +15 -13
- package/lib/ml-dom/node/element.d.ts +1906 -1817
- package/lib/ml-dom/node/element.js +345 -75
- package/lib/ml-dom/node/named-node-map.d.ts +45 -40
- package/lib/ml-dom/node/named-node-map.js +13 -5
- package/lib/ml-dom/node/node-list.d.ts +10 -4
- package/lib/ml-dom/node/node-list.js +25 -5
- package/lib/ml-dom/node/node-store.d.ts +10 -5
- package/lib/ml-dom/node/node-store.js +19 -1
- package/lib/ml-dom/node/node.d.ts +494 -467
- package/lib/ml-dom/node/node.js +89 -47
- package/lib/ml-dom/node/parent-node.d.ts +68 -59
- package/lib/ml-dom/node/parent-node.js +15 -6
- package/lib/ml-dom/node/rule-mapper.d.ts +9 -9
- package/lib/ml-dom/node/rule-mapper.js +11 -3
- package/lib/ml-dom/node/text.d.ts +50 -47
- package/lib/ml-dom/node/types.d.ts +94 -16
- package/lib/ml-dom/node/unexpected-call-error.d.ts +1 -2
- package/lib/ml-dom/token/token.d.ts +44 -44
- package/lib/ml-rule/create-rule.d.ts +4 -2
- package/lib/ml-rule/create-test-rule.d.ts +6 -4
- package/lib/ml-rule/ml-rule-context.d.ts +58 -49
- package/lib/ml-rule/ml-rule-context.js +23 -4
- package/lib/ml-rule/ml-rule.d.ts +36 -26
- package/lib/ml-rule/ml-rule.js +39 -34
- package/lib/ml-rule/types.d.ts +35 -17
- package/lib/plugin/plugin.d.ts +3 -1
- package/lib/plugin/types.d.ts +9 -9
- package/lib/ruleset/index.d.ts +4 -4
- package/lib/ruleset/index.js +4 -4
- package/lib/test/index.d.ts +21 -8
- package/lib/test/index.js +6 -4
- package/lib/types.d.ts +12 -10
- package/lib/utils/get-location-from-chars.d.ts +9 -4
- package/package.json +21 -15
- package/test/ml-dom/helper/accname.spec.js +85 -0
- package/test/ml-dom/helper/create-node.spec.js +18 -0
- package/test/ml-dom/index.spec.js +680 -0
- package/lib/ml-dom/document.d.ts +0 -94
- package/lib/ml-dom/document.js +0 -273
- package/lib/ml-dom/helper/index.d.ts +0 -4
- package/lib/ml-dom/helper/index.js +0 -12
- package/lib/ml-dom/helper/mapped-nodes.d.ts +0 -52
- package/lib/ml-dom/helper/mapped-nodes.js +0 -2
- package/lib/ml-dom/helper/match-selector.d.ts +0 -20
- package/lib/ml-dom/helper/match-selector.js +0 -233
- package/lib/ml-dom/helper/node-store.d.ts +0 -12
- package/lib/ml-dom/helper/node-store.js +0 -28
- package/lib/ml-dom/helper/selector.d.ts +0 -11
- package/lib/ml-dom/helper/selector.js +0 -549
- package/lib/ml-dom/rule-mapper.d.ts +0 -16
- package/lib/ml-dom/rule-mapper.js +0 -57
- package/lib/ml-dom/tokens/abstract-element.d.ts +0 -54
- package/lib/ml-dom/tokens/abstract-element.js +0 -249
- package/lib/ml-dom/tokens/attribute.d.ts +0 -42
- package/lib/ml-dom/tokens/attribute.js +0 -85
- package/lib/ml-dom/tokens/comment.d.ts +0 -12
- package/lib/ml-dom/tokens/comment.js +0 -15
- package/lib/ml-dom/tokens/doctype.d.ts +0 -18
- package/lib/ml-dom/tokens/doctype.js +0 -32
- package/lib/ml-dom/tokens/element-close-tag.d.ts +0 -27
- package/lib/ml-dom/tokens/element-close-tag.js +0 -45
- package/lib/ml-dom/tokens/element.d.ts +0 -26
- package/lib/ml-dom/tokens/element.js +0 -66
- package/lib/ml-dom/tokens/index.d.ts +0 -10
- package/lib/ml-dom/tokens/index.js +0 -26
- package/lib/ml-dom/tokens/node.d.ts +0 -46
- package/lib/ml-dom/tokens/node.js +0 -126
- package/lib/ml-dom/tokens/omitted-element.d.ts +0 -13
- package/lib/ml-dom/tokens/omitted-element.js +0 -12
- package/lib/ml-dom/tokens/preprocessor-specific-attribute.d.ts +0 -24
- package/lib/ml-dom/tokens/preprocessor-specific-attribute.js +0 -37
- package/lib/ml-dom/tokens/preprocessor-specific-block.d.ts +0 -14
- package/lib/ml-dom/tokens/preprocessor-specific-block.js +0 -16
- package/lib/ml-dom/tokens/text.d.ts +0 -19
- package/lib/ml-dom/tokens/text.js +0 -26
- package/lib/ml-dom/tokens/token.d.ts +0 -16
- package/lib/ml-dom/tokens/token.js +0 -55
- package/lib/ml-dom/types.d.ts +0 -49
- package/lib/ml-dom/types.js +0 -2
- package/lib/selector/is-pure-html-element.d.ts +0 -1
- package/lib/selector/is-pure-html-element.js +0 -7
- package/lib/selector/match-selector.d.ts +0 -14
- package/lib/selector/match-selector.js +0 -230
- package/lib/selector/selector.d.ts +0 -9
- package/lib/selector/selector.js +0 -561
- package/tsconfig.test.json +0 -3
- package/tsconfig.tsbuildinfo +0 -1
|
@@ -23,22 +23,25 @@ class MLDocument extends parent_node_1.MLParentNode {
|
|
|
23
23
|
* @param ast node list of markuplint AST
|
|
24
24
|
* @param ruleset ruleset object
|
|
25
25
|
*/
|
|
26
|
-
constructor(
|
|
27
|
-
|
|
26
|
+
constructor(
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
28
|
+
ast, ruleset, schemas, options) {
|
|
29
|
+
var _a, _b;
|
|
28
30
|
// @ts-ignore
|
|
29
31
|
super(ast, null);
|
|
30
32
|
/**
|
|
31
33
|
*
|
|
32
34
|
*/
|
|
33
|
-
|
|
34
|
-
_MLDocument_tokenList.set(this, null);
|
|
35
|
+
this.currentRule = null;
|
|
35
36
|
/**
|
|
36
37
|
*
|
|
37
38
|
*/
|
|
38
|
-
this
|
|
39
|
+
_MLDocument_filename.set(this, void 0);
|
|
40
|
+
_MLDocument_tokenList.set(this, null);
|
|
39
41
|
this.isFragment = ast.isFragment;
|
|
40
42
|
this.specs = (0, ml_spec_1.schemaToSpec)(schemas);
|
|
41
|
-
this.
|
|
43
|
+
this.booleanish = (_a = options === null || options === void 0 ? void 0 : options.booleanish) !== null && _a !== void 0 ? _a : false;
|
|
44
|
+
this.endTag = (_b = options === null || options === void 0 ? void 0 : options.endTag) !== null && _b !== void 0 ? _b : 'omittable';
|
|
42
45
|
tslib_1.__classPrivateFieldSet(this, _MLDocument_filename, options === null || options === void 0 ? void 0 : options.filename, "f");
|
|
43
46
|
// console.log(ast.nodeList.map((n, i) => `${i}: ${n.uuid} "${n.raw.trim()}"(${n.type})`));
|
|
44
47
|
this.nodeList = Object.freeze(ast.nodeList
|
|
@@ -49,8 +52,18 @@ class MLDocument extends parent_node_1.MLParentNode {
|
|
|
49
52
|
return (0, create_node_1.createNode)(astNode, this);
|
|
50
53
|
})
|
|
51
54
|
.filter((n) => !!n));
|
|
55
|
+
this._pretending(options === null || options === void 0 ? void 0 : options.pretenders);
|
|
52
56
|
this._ruleMapping(ruleset);
|
|
53
57
|
}
|
|
58
|
+
/**
|
|
59
|
+
* **IT THROWS AN ERROR WHEN CALLING THIS.**
|
|
60
|
+
*
|
|
61
|
+
* @unsupported
|
|
62
|
+
* @implements DOM API: `Document`
|
|
63
|
+
*/
|
|
64
|
+
get URL() {
|
|
65
|
+
throw new unexpected_call_error_1.default('Not supported "URL" property');
|
|
66
|
+
}
|
|
54
67
|
/**
|
|
55
68
|
* **IT THROWS AN ERROR WHEN CALLING THIS.**
|
|
56
69
|
*
|
|
@@ -60,6 +73,15 @@ class MLDocument extends parent_node_1.MLParentNode {
|
|
|
60
73
|
get activeElement() {
|
|
61
74
|
throw new unexpected_call_error_1.default('Not supported "activeElement" property');
|
|
62
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* **IT THROWS AN ERROR WHEN CALLING THIS.**
|
|
78
|
+
*
|
|
79
|
+
* @unsupported
|
|
80
|
+
* @implements DOM API: `Document`
|
|
81
|
+
*/
|
|
82
|
+
get adoptedStyleSheets() {
|
|
83
|
+
throw new unexpected_call_error_1.default('Not supported "adoptedStyleSheets" property');
|
|
84
|
+
}
|
|
63
85
|
/**
|
|
64
86
|
* **IT THROWS AN ERROR WHEN CALLING THIS.**
|
|
65
87
|
*
|
|
@@ -184,7 +206,9 @@ class MLDocument extends parent_node_1.MLParentNode {
|
|
|
184
206
|
*/
|
|
185
207
|
get defaultView() {
|
|
186
208
|
return {
|
|
187
|
-
getComputedStyle(
|
|
209
|
+
getComputedStyle(
|
|
210
|
+
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
211
|
+
_el) {
|
|
188
212
|
return {
|
|
189
213
|
getPropertyValue(_propName) {
|
|
190
214
|
return {};
|
|
@@ -320,7 +344,7 @@ class MLDocument extends parent_node_1.MLParentNode {
|
|
|
320
344
|
* @implements DOM API: `Document`
|
|
321
345
|
*/
|
|
322
346
|
get fullscreenEnabled() {
|
|
323
|
-
throw new unexpected_call_error_1.default('Not supported "
|
|
347
|
+
throw new unexpected_call_error_1.default('Not supported "FullscreenEnabledURL" property');
|
|
324
348
|
}
|
|
325
349
|
/**
|
|
326
350
|
* **IT THROWS AN ERROR WHEN CALLING THIS.**
|
|
@@ -479,6 +503,16 @@ class MLDocument extends parent_node_1.MLParentNode {
|
|
|
479
503
|
get onauxclick() {
|
|
480
504
|
throw new unexpected_call_error_1.default('Not supported "onauxclick" property');
|
|
481
505
|
}
|
|
506
|
+
/**
|
|
507
|
+
* **IT THROWS AN ERROR WHEN CALLING THIS.**
|
|
508
|
+
*
|
|
509
|
+
* @deprecated
|
|
510
|
+
* @unsupported
|
|
511
|
+
* @implements DOM API: `Document`
|
|
512
|
+
*/
|
|
513
|
+
get onbeforeinput() {
|
|
514
|
+
throw new unexpected_call_error_1.default('Not supported "onbeforeinput" property');
|
|
515
|
+
}
|
|
482
516
|
/**
|
|
483
517
|
* **IT THROWS AN ERROR WHEN CALLING THIS.**
|
|
484
518
|
*
|
|
@@ -489,6 +523,16 @@ class MLDocument extends parent_node_1.MLParentNode {
|
|
|
489
523
|
get onblur() {
|
|
490
524
|
throw new unexpected_call_error_1.default('Not supported "onblur" property');
|
|
491
525
|
}
|
|
526
|
+
/**
|
|
527
|
+
* **IT THROWS AN ERROR WHEN CALLING THIS.**
|
|
528
|
+
*
|
|
529
|
+
* @deprecated
|
|
530
|
+
* @unsupported
|
|
531
|
+
* @implements DOM API: `Document`
|
|
532
|
+
*/
|
|
533
|
+
get oncancel() {
|
|
534
|
+
throw new unexpected_call_error_1.default('Not supported "oncanplay" property');
|
|
535
|
+
}
|
|
492
536
|
/**
|
|
493
537
|
* **IT THROWS AN ERROR WHEN CALLING THIS.**
|
|
494
538
|
*
|
|
@@ -1481,15 +1525,6 @@ class MLDocument extends parent_node_1.MLParentNode {
|
|
|
1481
1525
|
get title() {
|
|
1482
1526
|
throw new unexpected_call_error_1.default('Not supported "title" property');
|
|
1483
1527
|
}
|
|
1484
|
-
/**
|
|
1485
|
-
* **IT THROWS AN ERROR WHEN CALLING THIS.**
|
|
1486
|
-
*
|
|
1487
|
-
* @unsupported
|
|
1488
|
-
* @implements DOM API: `Document`
|
|
1489
|
-
*/
|
|
1490
|
-
get URL() {
|
|
1491
|
-
throw new unexpected_call_error_1.default('Not supported "URL" property');
|
|
1492
|
-
}
|
|
1493
1528
|
/**
|
|
1494
1529
|
* **IT THROWS AN ERROR WHEN CALLING THIS.**
|
|
1495
1530
|
*
|
|
@@ -1634,7 +1669,9 @@ class MLDocument extends parent_node_1.MLParentNode {
|
|
|
1634
1669
|
* @unsupported
|
|
1635
1670
|
* @implements DOM API: `Document`
|
|
1636
1671
|
*/
|
|
1637
|
-
createExpression(expression,
|
|
1672
|
+
createExpression(expression,
|
|
1673
|
+
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
1674
|
+
resolver) {
|
|
1638
1675
|
throw new unexpected_call_error_1.default('Not supported "createExpression" method');
|
|
1639
1676
|
}
|
|
1640
1677
|
/**
|
|
@@ -1643,8 +1680,10 @@ class MLDocument extends parent_node_1.MLParentNode {
|
|
|
1643
1680
|
* @unsupported
|
|
1644
1681
|
* @implements DOM API: `Document`
|
|
1645
1682
|
*/
|
|
1646
|
-
|
|
1647
|
-
|
|
1683
|
+
createNSResolver(
|
|
1684
|
+
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
1685
|
+
nodeResolver) {
|
|
1686
|
+
throw new unexpected_call_error_1.default('Not supported "createNSResolver" method');
|
|
1648
1687
|
}
|
|
1649
1688
|
/**
|
|
1650
1689
|
* **IT THROWS AN ERROR WHEN CALLING THIS.**
|
|
@@ -1652,8 +1691,12 @@ class MLDocument extends parent_node_1.MLParentNode {
|
|
|
1652
1691
|
* @unsupported
|
|
1653
1692
|
* @implements DOM API: `Document`
|
|
1654
1693
|
*/
|
|
1655
|
-
|
|
1656
|
-
|
|
1694
|
+
createNodeIterator(
|
|
1695
|
+
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
1696
|
+
root, whatToShow,
|
|
1697
|
+
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
1698
|
+
filter) {
|
|
1699
|
+
throw new unexpected_call_error_1.default('Not supported "createNodeIterator" method');
|
|
1657
1700
|
}
|
|
1658
1701
|
/**
|
|
1659
1702
|
* **IT THROWS AN ERROR WHEN CALLING THIS.**
|
|
@@ -1688,7 +1731,11 @@ class MLDocument extends parent_node_1.MLParentNode {
|
|
|
1688
1731
|
* @unsupported
|
|
1689
1732
|
* @implements DOM API: `Document`
|
|
1690
1733
|
*/
|
|
1691
|
-
createTreeWalker(
|
|
1734
|
+
createTreeWalker(
|
|
1735
|
+
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
1736
|
+
root, whatToShow,
|
|
1737
|
+
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
1738
|
+
filter) {
|
|
1692
1739
|
throw new unexpected_call_error_1.default('Not supported "createTreeWalker" method');
|
|
1693
1740
|
}
|
|
1694
1741
|
/**
|
|
@@ -1721,7 +1768,13 @@ class MLDocument extends parent_node_1.MLParentNode {
|
|
|
1721
1768
|
* @unsupported
|
|
1722
1769
|
* @implements DOM API: `Document`
|
|
1723
1770
|
*/
|
|
1724
|
-
evaluate(expression,
|
|
1771
|
+
evaluate(expression,
|
|
1772
|
+
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
1773
|
+
contextNode,
|
|
1774
|
+
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
1775
|
+
resolver, type,
|
|
1776
|
+
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
1777
|
+
result) {
|
|
1725
1778
|
throw new unexpected_call_error_1.default('Not supported "evaluate" method');
|
|
1726
1779
|
}
|
|
1727
1780
|
/**
|
|
@@ -1945,6 +1998,17 @@ class MLDocument extends parent_node_1.MLParentNode {
|
|
|
1945
1998
|
requestStorageAccess() {
|
|
1946
1999
|
throw new unexpected_call_error_1.default('Not supported "requestStorageAccess" method');
|
|
1947
2000
|
}
|
|
2001
|
+
/**
|
|
2002
|
+
* @implements `@markuplint/ml-core` API: `MLDocument`
|
|
2003
|
+
*/
|
|
2004
|
+
searchNodeByLocation(line, col) {
|
|
2005
|
+
for (const node of this.nodeList) {
|
|
2006
|
+
if (node.startLine <= line && line <= node.endLine && node.startCol <= col && col <= node.endCol) {
|
|
2007
|
+
return node;
|
|
2008
|
+
}
|
|
2009
|
+
}
|
|
2010
|
+
return null;
|
|
2011
|
+
}
|
|
1948
2012
|
/**
|
|
1949
2013
|
* @implements `@markuplint/ml-core` API: `MLDocument`
|
|
1950
2014
|
*/
|
|
@@ -2001,6 +2065,19 @@ class MLDocument extends parent_node_1.MLParentNode {
|
|
|
2001
2065
|
writeln(...text) {
|
|
2002
2066
|
throw new unexpected_call_error_1.default('Not supported "writeln" method');
|
|
2003
2067
|
}
|
|
2068
|
+
_pretending(pretenders) {
|
|
2069
|
+
if (docLog.enabled) {
|
|
2070
|
+
docLog('Pretending: %O', pretenders);
|
|
2071
|
+
}
|
|
2072
|
+
if (!pretenders) {
|
|
2073
|
+
return;
|
|
2074
|
+
}
|
|
2075
|
+
for (const node of this.nodeList) {
|
|
2076
|
+
if (node.is(node.ELEMENT_NODE)) {
|
|
2077
|
+
node.pretending(pretenders);
|
|
2078
|
+
}
|
|
2079
|
+
}
|
|
2080
|
+
}
|
|
2004
2081
|
_ruleMapping(ruleset) {
|
|
2005
2082
|
if (docLog.enabled) {
|
|
2006
2083
|
docLog('Rule Mapping: %O', Object.keys(ruleset.rules));
|
|
@@ -2009,6 +2086,9 @@ class MLDocument extends parent_node_1.MLParentNode {
|
|
|
2009
2086
|
// global rules to #document
|
|
2010
2087
|
Object.keys(ruleset.rules).forEach(ruleName => {
|
|
2011
2088
|
const rule = ruleset.rules[ruleName];
|
|
2089
|
+
if (rule == null) {
|
|
2090
|
+
return;
|
|
2091
|
+
}
|
|
2012
2092
|
ruleMapper.set(this, ruleName, {
|
|
2013
2093
|
from: 'rules',
|
|
2014
2094
|
specificity: [0, 0, 0],
|
|
@@ -2023,6 +2103,9 @@ class MLDocument extends parent_node_1.MLParentNode {
|
|
|
2023
2103
|
// global rules to each element
|
|
2024
2104
|
Object.keys(ruleset.rules).forEach(ruleName => {
|
|
2025
2105
|
const rule = ruleset.rules[ruleName];
|
|
2106
|
+
if (rule == null) {
|
|
2107
|
+
return;
|
|
2108
|
+
}
|
|
2026
2109
|
ruleMapper.set(node, ruleName, {
|
|
2027
2110
|
from: 'rules',
|
|
2028
2111
|
specificity: [0, 0, 0],
|
|
@@ -2035,13 +2118,14 @@ class MLDocument extends parent_node_1.MLParentNode {
|
|
|
2035
2118
|
const selectorTarget = node.is(node.ELEMENT_NODE) ? node : null;
|
|
2036
2119
|
// node specs and special rules for node by selector
|
|
2037
2120
|
ruleset.nodeRules.forEach(nodeRule => {
|
|
2121
|
+
var _a, _b;
|
|
2038
2122
|
if (!nodeRule.rules) {
|
|
2039
2123
|
return;
|
|
2040
2124
|
}
|
|
2041
2125
|
if (!selectorTarget) {
|
|
2042
2126
|
return;
|
|
2043
2127
|
}
|
|
2044
|
-
const selector = nodeRule.selector
|
|
2128
|
+
const selector = (_a = nodeRule.selector) !== null && _a !== void 0 ? _a : nodeRule.regexSelector;
|
|
2045
2129
|
const matches = (0, selector_1.matchSelector)(selectorTarget, selector);
|
|
2046
2130
|
if (!matches.matched) {
|
|
2047
2131
|
return;
|
|
@@ -2052,12 +2136,15 @@ class MLDocument extends parent_node_1.MLParentNode {
|
|
|
2052
2136
|
const ruleList = Object.keys(nodeRule.rules);
|
|
2053
2137
|
for (const ruleName of ruleList) {
|
|
2054
2138
|
const rule = nodeRule.rules[ruleName];
|
|
2055
|
-
|
|
2139
|
+
if (rule == null) {
|
|
2140
|
+
continue;
|
|
2141
|
+
}
|
|
2142
|
+
const convertedRule = (0, ml_config_1.exchangeValueOnRule)(rule, (_b = matches.data) !== null && _b !== void 0 ? _b : {});
|
|
2056
2143
|
if (convertedRule === undefined) {
|
|
2057
2144
|
continue;
|
|
2058
2145
|
}
|
|
2059
2146
|
const globalRule = ruleset.rules[ruleName];
|
|
2060
|
-
const mergedRule = globalRule ? (0, ml_config_1.mergeRule)(globalRule, convertedRule) : convertedRule;
|
|
2147
|
+
const mergedRule = globalRule != null ? (0, ml_config_1.mergeRule)(globalRule, convertedRule) : convertedRule;
|
|
2061
2148
|
ruleLog('↑ nodeRule (%s): %O', ruleName, mergedRule);
|
|
2062
2149
|
ruleMapper.set(node, ruleName, {
|
|
2063
2150
|
from: 'nodeRules',
|
|
@@ -2067,19 +2154,20 @@ class MLDocument extends parent_node_1.MLParentNode {
|
|
|
2067
2154
|
}
|
|
2068
2155
|
});
|
|
2069
2156
|
// overwrite rule to child node
|
|
2070
|
-
if (selectorTarget && ruleset.childNodeRules.length) {
|
|
2157
|
+
if (selectorTarget && ruleset.childNodeRules.length > 0) {
|
|
2071
2158
|
const descendants = [];
|
|
2072
2159
|
const children = Array.from(selectorTarget.childNodes);
|
|
2073
2160
|
(0, walkers_1.syncWalk)(children, childNode => {
|
|
2074
2161
|
descendants.push(childNode);
|
|
2075
2162
|
});
|
|
2076
|
-
ruleset.childNodeRules.forEach(
|
|
2163
|
+
ruleset.childNodeRules.forEach(nodeRule => {
|
|
2164
|
+
var _a;
|
|
2077
2165
|
if (!nodeRule.rules) {
|
|
2078
2166
|
return;
|
|
2079
2167
|
}
|
|
2080
2168
|
const nodeRuleRules = nodeRule.rules;
|
|
2081
|
-
const selector = nodeRule.selector
|
|
2082
|
-
if (
|
|
2169
|
+
const selector = (_a = nodeRule.selector) !== null && _a !== void 0 ? _a : nodeRule.regexSelector;
|
|
2170
|
+
if (selector == null) {
|
|
2083
2171
|
return;
|
|
2084
2172
|
}
|
|
2085
2173
|
const matches = (0, selector_1.matchSelector)(selectorTarget, selector);
|
|
@@ -2091,13 +2179,17 @@ class MLDocument extends parent_node_1.MLParentNode {
|
|
|
2091
2179
|
}
|
|
2092
2180
|
const targetDescendants = nodeRule.inheritance ? descendants : children;
|
|
2093
2181
|
Object.keys(nodeRuleRules).forEach(ruleName => {
|
|
2182
|
+
var _a;
|
|
2094
2183
|
const rule = nodeRuleRules[ruleName];
|
|
2095
|
-
|
|
2184
|
+
if (rule == null) {
|
|
2185
|
+
return;
|
|
2186
|
+
}
|
|
2187
|
+
const convertedRule = (0, ml_config_1.exchangeValueOnRule)(rule, (_a = matches.data) !== null && _a !== void 0 ? _a : {});
|
|
2096
2188
|
if (convertedRule === undefined) {
|
|
2097
2189
|
return;
|
|
2098
2190
|
}
|
|
2099
2191
|
const globalRule = ruleset.rules[ruleName];
|
|
2100
|
-
const mergedRule = globalRule ? (0, ml_config_1.mergeRule)(globalRule, convertedRule) : convertedRule;
|
|
2192
|
+
const mergedRule = globalRule != null ? (0, ml_config_1.mergeRule)(globalRule, convertedRule) : convertedRule;
|
|
2101
2193
|
ruleLog('↑ childNodeRule (%s): %O', ruleName, mergedRule);
|
|
2102
2194
|
targetDescendants.forEach(descendant => {
|
|
2103
2195
|
ruleMapper.set(descendant, ruleName, {
|
|
@@ -1,33 +1,33 @@
|
|
|
1
1
|
import type { MLAttr } from './attr';
|
|
2
2
|
import type { RuleInfo } from '@markuplint/ml-config';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
type Scope = {
|
|
4
|
+
raw: string;
|
|
5
|
+
startOffset: number;
|
|
6
|
+
startLine: number;
|
|
7
|
+
startCol: number;
|
|
8
|
+
rule: RuleInfo<any, any>;
|
|
9
9
|
};
|
|
10
10
|
export declare class MLDomTokenList extends Array<string> implements DOMTokenList {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
11
|
+
#private;
|
|
12
|
+
constructor(tokens: string, ownerAttrs: MLAttr<any, any>[]);
|
|
13
|
+
get value(): string;
|
|
14
|
+
add(...tokens: readonly string[]): void;
|
|
15
|
+
/**
|
|
16
|
+
* @implements `@markuplint/ml-core` API: `MLDomTokenList`
|
|
17
|
+
*/
|
|
18
|
+
allTokens(): Scope[];
|
|
19
|
+
contains(token: string): boolean;
|
|
20
|
+
forEach(callbackfn: (value: string, index: number, parent: any) => void, thisArg?: any): void;
|
|
21
|
+
item(index: number): string | null;
|
|
22
|
+
/**
|
|
23
|
+
* @implements `@markuplint/ml-core` API: `MLDomTokenList`
|
|
24
|
+
*/
|
|
25
|
+
pick(token: string): Scope | null;
|
|
26
|
+
remove(...tokens: readonly string[]): void;
|
|
27
|
+
replace(token: string, newToken: string): boolean;
|
|
28
|
+
supports(token: string): boolean;
|
|
29
|
+
toString(): string;
|
|
30
|
+
toggle(token: string, force?: boolean): boolean;
|
|
31
|
+
private _pick;
|
|
32
32
|
}
|
|
33
33
|
export {};
|
|
@@ -1,24 +1,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
2
|
+
var _MLDomTokenList_origin, _MLDomTokenList_ownerAttrs, _MLDomTokenList_set;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
exports.MLDomTokenList = void 0;
|
|
5
5
|
const tslib_1 = require("tslib");
|
|
6
6
|
const parser_utils_1 = require("@markuplint/parser-utils");
|
|
7
7
|
const unexpected_call_error_1 = tslib_1.__importDefault(require("./unexpected-call-error"));
|
|
8
8
|
class MLDomTokenList extends Array {
|
|
9
|
-
constructor(tokens,
|
|
9
|
+
constructor(tokens,
|
|
10
|
+
// eslint-disable-next-line @typescript-eslint/prefer-readonly-parameter-types
|
|
11
|
+
ownerAttrs) {
|
|
10
12
|
const list = tokens
|
|
11
13
|
.split(/\s+/)
|
|
12
14
|
.map(t => t.trim())
|
|
13
15
|
.filter(t => !!t);
|
|
14
16
|
super(...list);
|
|
15
|
-
_MLDomTokenList_set.set(this, void 0);
|
|
16
17
|
_MLDomTokenList_origin.set(this, void 0);
|
|
17
18
|
/**
|
|
18
19
|
* In some cases, an author specifies multiple attributes or directives.
|
|
19
20
|
* The reference is not always one.
|
|
20
21
|
*/
|
|
21
22
|
_MLDomTokenList_ownerAttrs.set(this, void 0);
|
|
23
|
+
_MLDomTokenList_set.set(this, void 0);
|
|
22
24
|
tslib_1.__classPrivateFieldSet(this, _MLDomTokenList_origin, tokens, "f");
|
|
23
25
|
tslib_1.__classPrivateFieldSet(this, _MLDomTokenList_ownerAttrs, ownerAttrs, "f");
|
|
24
26
|
tslib_1.__classPrivateFieldSet(this, _MLDomTokenList_set, new Set(list), "f");
|
|
@@ -43,7 +45,7 @@ class MLDomTokenList extends Array {
|
|
|
43
45
|
let offset = 0;
|
|
44
46
|
const tokens = Array.from(this);
|
|
45
47
|
const locs = [];
|
|
46
|
-
while (tokens.length) {
|
|
48
|
+
while (tokens.length > 0) {
|
|
47
49
|
const token = tokens.shift();
|
|
48
50
|
if (!token) {
|
|
49
51
|
break;
|
|
@@ -99,15 +101,15 @@ class MLDomTokenList extends Array {
|
|
|
99
101
|
supports(token) {
|
|
100
102
|
throw new unexpected_call_error_1.default('Not supported "supports" method');
|
|
101
103
|
}
|
|
102
|
-
toggle(token, force) {
|
|
103
|
-
throw new unexpected_call_error_1.default('Not supported "toggle" method');
|
|
104
|
-
}
|
|
105
104
|
toString() {
|
|
106
105
|
return this.value;
|
|
107
106
|
}
|
|
107
|
+
toggle(token, force) {
|
|
108
|
+
throw new unexpected_call_error_1.default('Not supported "toggle" method');
|
|
109
|
+
}
|
|
108
110
|
_pick(token, _offset = 0) {
|
|
109
|
-
var _a, _b, _c, _d, _e, _f;
|
|
110
|
-
token = token.trim().split(/\s+/g)[0];
|
|
111
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
112
|
+
token = (_a = token.trim().split(/\s+/g)[0]) !== null && _a !== void 0 ? _a : '';
|
|
111
113
|
if (!token) {
|
|
112
114
|
return null;
|
|
113
115
|
}
|
|
@@ -123,9 +125,9 @@ class MLDomTokenList extends Array {
|
|
|
123
125
|
const startCol = (0, parser_utils_1.getCol)(tslib_1.__classPrivateFieldGet(this, _MLDomTokenList_origin, "f"), startOffset);
|
|
124
126
|
return {
|
|
125
127
|
raw: token,
|
|
126
|
-
startOffset: ((
|
|
127
|
-
startLine: ((
|
|
128
|
-
startCol: ((
|
|
128
|
+
startOffset: ((_c = (_b = ownerAttr.valueNode) === null || _b === void 0 ? void 0 : _b.startOffset) !== null && _c !== void 0 ? _c : 0) + startOffset,
|
|
129
|
+
startLine: ((_e = (_d = ownerAttr.valueNode) === null || _d === void 0 ? void 0 : _d.startLine) !== null && _e !== void 0 ? _e : 0) + (startLine - 1),
|
|
130
|
+
startCol: ((_g = (_f = ownerAttr.valueNode) === null || _f === void 0 ? void 0 : _f.startCol) !== null && _g !== void 0 ? _g : 0) + (startCol - 1),
|
|
129
131
|
rule: ownerAttr.rule,
|
|
130
132
|
_searchedIndex: startOffset,
|
|
131
133
|
};
|
|
@@ -134,4 +136,4 @@ class MLDomTokenList extends Array {
|
|
|
134
136
|
}
|
|
135
137
|
}
|
|
136
138
|
exports.MLDomTokenList = MLDomTokenList;
|
|
137
|
-
|
|
139
|
+
_MLDomTokenList_origin = new WeakMap(), _MLDomTokenList_ownerAttrs = new WeakMap(), _MLDomTokenList_set = new WeakMap();
|