-
-
Notifications
You must be signed in to change notification settings - Fork 681
/
Copy pathspace-infix-ops.js
71 lines (65 loc) · 1.72 KB
/
space-infix-ops.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
68
69
70
71
/**
* @author Toru Nagashima
*/
'use strict'
const { RuleTester, ESLint } = require('../../eslint-compat')
const semver = require('semver')
const rule = require('../../../lib/rules/space-infix-ops')
const tester = new RuleTester({
languageOptions: { parser: require('vue-eslint-parser'), ecmaVersion: 2015 }
})
const message = semver.lt(ESLint.version, '5.10.0')
? () => 'Infix operators must be spaced.'
: (operator) => `Operator '${operator}' must be spaced.`
tester.run('space-infix-ops', rule, {
valid: [
'<template><div :attr="a + 1" /></template>',
'<template><div :attr="a ? 1 : 2" /></template>',
'<template><div :[1+2]="a" /></template>',
// CSS vars injection
`
<style>
.text {
padding: v-bind('a + b + "px"')
}
</style>`
],
invalid: [
{
code: '<template><div :attr="a+1" /></template>',
output: '<template><div :attr="a + 1" /></template>',
errors: [message('+')]
},
{
code: '<template><div :attr="a?1 : 2" /></template>',
output: '<template><div :attr="a ? 1 : 2" /></template>',
errors: [message('?')]
},
{
code: '<template><div :attr="a ? 1:2" /></template>',
output: '<template><div :attr="a ? 1 : 2" /></template>',
errors: [message(':')]
},
{
code: '<template><div :[1+2]="1+2" /></template>',
output: '<template><div :[1+2]="1 + 2" /></template>',
errors: [message('+')]
},
// CSS vars injection
{
code: `
<style>
.text {
padding: v-bind('a+b+"px"')
}
</style>`,
output: `
<style>
.text {
padding: v-bind('a + b + "px"')
}
</style>`,
errors: [message('+'), message('+')]
}
]
})