Skip to content

Commit 9fd7a6c

Browse files
authored
Fix parsing error in prefer-style-directive (#96)
1 parent 05e9cc9 commit 9fd7a6c

File tree

4 files changed

+24
-3
lines changed

4 files changed

+24
-3
lines changed

docs-svelte-kit/.eslintrc.cjs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ module.exports = {
99
"@ota-meshi/svelte/button-has-type": "error",
1010
"@ota-meshi/svelte/no-useless-mustaches": "error",
1111
"@ota-meshi/svelte/prefer-class-directive": "error",
12+
// TODO Still get an error with prettier-plugin-svelte. Probably fixed in v2.6.
13+
// "@ota-meshi/svelte/prefer-style-directive": "error",
1214
"@ota-meshi/svelte/spaced-html-comment": "error",
1315
},
1416
}

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
"@babel/types": "^7.16.0",
7474
"@fontsource/fira-mono": "^4.5.0",
7575
"@ota-meshi/eslint-plugin": "^0.10.0",
76-
"@ota-meshi/eslint-plugin-svelte": "^0.21.0",
76+
"@ota-meshi/eslint-plugin-svelte": "^0.22.0",
7777
"@sindresorhus/slugify": "^2.1.0",
7878
"@sveltejs/adapter-static": "^1.0.0-next.21",
7979
"@sveltejs/kit": "^1.0.0-next.201",
@@ -113,7 +113,7 @@
113113
"pako": "^2.0.3",
114114
"pirates": "^4.0.1",
115115
"prettier": "^2.2.1",
116-
"prettier-plugin-svelte": "^2.2.0",
116+
"prettier-plugin-svelte": "^2.5.1",
117117
"prism-svelte": "^0.4.7",
118118
"prismjs": "^1.25.0",
119119
"semver": "^7.3.5",

src/rules/prefer-style-directive.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@ import type { AST } from "svelte-eslint-parser"
22
import { parse as parseCss } from "postcss"
33
import { createRule } from "../utils"
44

5+
/** Parse for CSS */
6+
function safeParseCss(cssCode: string) {
7+
try {
8+
return parseCss(cssCode)
9+
} catch {
10+
return null
11+
}
12+
}
13+
514
export default createRule("prefer-style-directive", {
615
meta: {
716
docs: {
@@ -39,7 +48,10 @@ export default createRule("prefer-style-directive", {
3948
return sourceCode.getText(value)
4049
})
4150
.join("")
42-
const root = parseCss(cssCode)
51+
const root = safeParseCss(cssCode)
52+
if (!root) {
53+
return
54+
}
4355
root.walkDecls((decl) => {
4456
if (
4557
node.parent.attributes.some(
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<script>
2+
let style = "color: red"
3+
</script>
4+
5+
<div {style}>...</div>
6+
<!-- prettier-ignore -->
7+
<div style="{style}">...</div>

0 commit comments

Comments
 (0)