Skip to content

Commit ce154f2

Browse files
committed
refactor(rule): use IgnoreNodeManager
simply implementation1
1 parent dc31b2c commit ce154f2

File tree

2 files changed

+17
-26
lines changed

2 files changed

+17
-26
lines changed

package.json

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,17 +36,16 @@
3636
],
3737
"devDependencies": {
3838
"babel-cli": "^6.5.1",
39-
"babel-plugin-add-module-exports": "^0.1.2",
39+
"babel-plugin-add-module-exports": "^0.2.1",
4040
"babel-preset-es2015": "^6.5.0",
4141
"babel-register": "^6.5.2",
4242
"mocha": "^2.4.5",
4343
"textlint": "^6.0.1",
4444
"textlint-tester": "^1.1.0"
4545
},
4646
"dependencies": {
47-
"rousseau": "^1.0.0",
4847
"object-assign": "^4.0.1",
49-
"textlint-rule-helper": "^1.1.5",
50-
"textlint-util-to-string": "^1.2.0"
48+
"rousseau": "^1.0.0",
49+
"textlint-rule-helper": "^1.2.0"
5150
}
5251
}

src/textlint-rule-rousseau.js

Lines changed: 14 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// LICENSE : MIT
22
"use strict";
3-
const {RuleHelper} = require("textlint-rule-helper");
4-
const StringSource = require("textlint-util-to-string").default;
3+
import {RuleHelper, IgnoreNodeManger} from "textlint-rule-helper";
54
const rousseau = require("rousseau");
65
const ObjectAssign = require("object-assign");
76
const defaultOptions = {
@@ -27,6 +26,7 @@ const mapNode = function (ast, mapFn) {
2726

2827
export default function textlintRousseau(context, options = defaultOptions) {
2928
const helper = new RuleHelper(context);
29+
const ignoreNodeManager = new IgnoreNodeManger();
3030
const {Syntax, RuleError, report, getSource} = context;
3131
const showLevels = options.showLevels || defaultOptions.showLevels;
3232
const ignoreTypes = options.ignoreTypes || defaultOptions.ignoreTypes;
@@ -72,7 +72,7 @@ export default function textlintRousseau(context, options = defaultOptions) {
7272
return "=> " + value;
7373
}).join("\n");
7474
};
75-
const reportError = (node, source, result) => {
75+
const reportError = (node, result) => {
7676
const level = result.level;
7777
const type = result.type;
7878
// if not contains showing options, ignore this result
@@ -82,7 +82,11 @@ export default function textlintRousseau(context, options = defaultOptions) {
8282
if (!isShowType(type)) {
8383
return;
8484
}
85-
const index = source.originalIndexFromIndex(result.index);
85+
const index = result.index;
86+
// if already ignored, should not report
87+
if(ignoreNodeManager.isIgnoredIndex(index)){
88+
return;
89+
}
8690
const suggestions = createSuggest(result.replacements);
8791
const ruleError = new RuleError(`${level}(${type}) ${result.message}${suggestions}`, {
8892
index
@@ -92,28 +96,16 @@ export default function textlintRousseau(context, options = defaultOptions) {
9296

9397
return {
9498
[Syntax.Paragraph](node){
99+
// ignore if wrapped node types
95100
if (helper.isChildNode(node, [Syntax.Link, Syntax.Image, Syntax.BlockQuote, Syntax.Emphasis])) {
96101
return;
97102
}
98-
const filteredNode = mapNode(node, (node) => {
99-
const index = ignoreInlineNodeTypes.indexOf(node.type);
100-
if (index === -1) {
101-
return node;
102-
}
103-
/*
104-
`xxx` => code
105-
*/
106-
return ObjectAssign({}, node, {
107-
value: node.type.toLocaleLowerCase()
108-
});
109-
});
110-
if (!filteredNode) {
111-
return;
112-
}
113-
const source = new StringSource(filteredNode);
114-
const text = source.toString();
103+
// ignore if contain child node types
104+
ignoreNodeManager.ignoreChildrenByTypes(node, ignoreInlineNodeTypes);
105+
// check
106+
const text = getSource(node);
115107
const reportSourceError = (results) => {
116-
reportError(node, source, results);
108+
reportError(node, results);
117109
};
118110
rousseau(text, function (err, results) {
119111
if (err) {

0 commit comments

Comments
 (0)