1 | const traverse = require('./traverse');
|
2 |
|
3 | class Reporter {
|
4 | constructor({ moddleRoot, rule }) {
|
5 | this.rule = rule;
|
6 | this.moddleRoot = moddleRoot;
|
7 | this.messages = [];
|
8 | this.report = this.report.bind(this);
|
9 | }
|
10 |
|
11 | report(id, message) {
|
12 | this.messages.push({ id, message });
|
13 | }
|
14 | }
|
15 |
|
16 | module.exports = function testRule({ moddleRoot, rule }) {
|
17 | const reporter = new Reporter({ rule, moddleRoot });
|
18 | traverse(moddleRoot, node => rule.check(node, reporter));
|
19 | return reporter.messages;
|
20 | };
|