66 lines
1.6 KiB
JavaScript
66 lines
1.6 KiB
JavaScript
/**
|
|
* @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 === '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
|
|
}
|
|
return false
|
|
} else {
|
|
return !(
|
|
state.block.disableAll ||
|
|
state.line.disableAll ||
|
|
state.block.disableRules.has(message.ruleId) ||
|
|
state.line.disableRules.has(message.ruleId)
|
|
)
|
|
}
|
|
})
|
|
},
|
|
|
|
supportsAutofix: true
|
|
}
|