Skip to content

Commit b3228ef

Browse files
renovate[bot]renovate-botota-meshi
authored
Update dependency @ota-meshi/eslint-plugin to ^0.8.0 (#78)
* Update dependency @ota-meshi/eslint-plugin to ^0.8.0 * fix Co-authored-by: Renovate Bot <bot@renovateapp.com> Co-authored-by: yosuke ota <otameshiyo23@gmail.com>
1 parent e928498 commit b3228ef

File tree

3 files changed

+27
-15
lines changed

3 files changed

+27
-15
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
"svelte": "^3.37.0"
4545
},
4646
"devDependencies": {
47-
"@ota-meshi/eslint-plugin": "^0.7.0",
47+
"@ota-meshi/eslint-plugin": "^0.8.0",
4848
"@ota-meshi/eslint-plugin-svelte": "^0.8.1",
4949
"@types/eslint": "^7.2.0",
5050
"@types/eslint-scope": "^3.7.0",

src/context/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ function* extractBlocks(code: string): IterableIterator<{
246246
const codeRange: [number, number] = [startTagEnd, endTagStart]
247247

248248
const attrRe =
249-
/(?<key>[^\s=]+)(?:=(?:"(?<val1>[^"]*)"|'(?<val2>[^"]*)'|(?<val3>[^\s=]+)))?/giu
249+
/(?<key>[^\s=]+)(?:=(?:"(?<val1>[^"]*)"|'(?<val2>[^"]*)'|(?<val3>[^\s=]+)))?/gu
250250
const attrs: Record<string, string | undefined> = {}
251251
let attrRes
252252
while ((attrRes = attrRe.exec(attributes))) {

src/parser/converts/root.ts

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -137,19 +137,31 @@ function extractAttributes(
137137
ctx: Context,
138138
) {
139139
const script = element.type === "SvelteScriptElement"
140-
const code =
141-
" ".repeat(element.range[0]) +
142-
ctx.sourceCode.template
143-
.slice(...element.range)
144-
.replace(
145-
script
146-
? /<script(\s[\s\S]*?)?>([\s\S]*?)<\/script>/giu
147-
: /<style(\s[\s\S]*?)?>([\s\S]*?)<\/style>/giu,
148-
(_tag, attributes: string | undefined, context: string) =>
149-
`${script ? "<div " : "<div "}${
150-
attributes || ""
151-
}>${" ".repeat(context.length)}</div>`,
152-
)
140+
141+
let code = " ".repeat(element.range[0])
142+
143+
const elementCode = ctx.sourceCode.template.slice(...element.range)
144+
const startRegex = script
145+
? /<script(\s[\s\S]*?)?>/giu
146+
: /<style(\s[\s\S]*?)?>/giu
147+
const endTag = script ? "</script>" : "</style>"
148+
let re
149+
let index = 0
150+
while ((re = startRegex.exec(elementCode))) {
151+
const [, attributes] = re
152+
153+
const endTagIndex = elementCode.indexOf(endTag, startRegex.lastIndex)
154+
if (endTagIndex >= 0) {
155+
const contextLength = endTagIndex - startRegex.lastIndex
156+
code += elementCode.slice(index, re.index)
157+
code += `${script ? "<div " : "<div "}${attributes || ""}>`
158+
code += `${" ".repeat(contextLength)}</div>`
159+
startRegex.lastIndex = index = endTagIndex + endTag.length
160+
} else {
161+
break
162+
}
163+
}
164+
code += elementCode.slice(index)
153165
const svelteAst = parse(code) as SvAST.Ast
154166

155167
const fakeElement = svelteAst.html.children.find(

0 commit comments

Comments
 (0)