/
vue.js
67 lines (63 loc) · 2.1 KB
/
vue.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
/**
* This was copied from eslint-plugin-vue.
* @author Toru Nagashima <https://github.com/mysticatea>
*/
"use strict"
module.exports = {
preprocess(code) {
return [code]
},
postprocess(messages) {
const state = {
block: {
disableAll: false,
disableRules: new Set(),
},
line: {
disableAll: false,
disableRules: new Set(),
},
}
// Filter messages which are in disabled area.
return messages[0].filter((message) => {
if (message.ruleId === "@mysticatea/vue/comment-directive") {
const rules = message.message.split(" ")
const type = rules.shift()
const group = rules.shift()
switch (type) {
case "--":
state[group].disableAll = true
break
case "++":
state[group].disableAll = false
break
case "-":
for (const rule of rules) {
state[group].disableRules.add(rule)
}
break
case "+":
for (const rule of rules) {
state[group].disableRules.delete(rule)
}
break
case "clear":
state.block.disableAll = false
state.block.disableRules.clear()
state.line.disableAll = false
state.line.disableRules.clear()
break
// no default
}
return false
}
return !(
state.block.disableAll ||
state.line.disableAll ||
state.block.disableRules.has(message.ruleId) ||
state.line.disableRules.has(message.ruleId)
)
})
},
supportsAutofix: true,
}