Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit99a550d

Browse files
committed
feat(lang-ts): try supporting all lang="ts" blocks as scripts elements
1 parentea93f60 commit99a550d

File tree

3 files changed

+32
-19
lines changed

3 files changed

+32
-19
lines changed

‎src/common/ast-utils.ts‎

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@ import type {
1414
*@returns `true` if the node is a `<script>` element.
1515
*/
1616
exportfunctionisScriptElement(node:VNode):node isVElement{
17-
returnnode.type==="VElement"&&node.name==="script"
17+
return(
18+
node.type==="VElement"&&
19+
(node.name==="script"||getLang(node)==="ts")
20+
)
1821
}
1922

2023
/**
@@ -44,7 +47,11 @@ export function isTemplateElement(node: VNode): node is VElement {
4447
*@returns `true` if the node is a `<style>` element.
4548
*/
4649
exportfunctionisStyleElement(node:VNode):node isVElement{
47-
returnnode.type==="VElement"&&node.name==="style"
50+
return(
51+
node.type==="VElement"&&
52+
node.name==="style"&&
53+
!(getLang(node)!=="ts")
54+
)
4855
}
4956

5057
/**

‎src/index.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,12 +131,12 @@ function parseAsSFC(code: string, options: ParserOptions) {
131131
parser:scriptParser,
132132
})
133133
}elseif(
134-
scripts.length===2&&
134+
scripts.length>=2&&
135135
(scriptSetup=scripts.find(isScriptSetupElement))
136136
){
137137
result=parseScriptSetupElements(
138138
scriptSetup,
139-
scripts.find((e)=>e!==scriptSetup)!,
139+
scripts.filter((e)=>e!==scriptSetup)!,
140140
code,
141141
newLinesAndColumns(tokenizer.lineTerminators),
142142
{

‎src/script-setup/index.ts‎

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ function parseScript(
206206
*/
207207
exportfunctionparseScriptSetupElements(
208208
scriptSetupElement:VElement,
209-
scriptElement:VElement,
209+
scriptElements:VElement[],
210210
sfcCode:string,
211211
linesAndColumns:LinesAndColumns,
212212
originalParserOptions:ParserOptions,
@@ -216,7 +216,7 @@ export function parseScriptSetupElements(
216216
)
217217
constscriptSetupModuleCodeBlocks=getScriptSetupModuleCodeBlocks(
218218
scriptSetupElement,
219-
scriptElement,
219+
scriptElements,
220220
sfcCode,
221221
linesAndColumns,
222222
parserOptions,
@@ -283,7 +283,7 @@ export function parseScriptSetupElements(
283283

284284
// Adjust AST and tokens
285285
if(result.ast.tokens!=null){
286-
for(constnodeof[scriptSetupElement,scriptElement]){
286+
for(constnodeof[scriptSetupElement,...scriptElements]){
287287
conststartTag=node.startTag
288288
constendTag=node.endTag
289289

@@ -314,7 +314,7 @@ export function parseScriptSetupElements(
314314
result.ast.loc.start=
315315
locationCalculator.getLocFromIndex(programStartOffset)
316316
if(result.ast.start!=null){
317-
result.ast.start=[scriptSetupElement,scriptElement].reduce(
317+
result.ast.start=[scriptSetupElement,...scriptElements].reduce(
318318
(start,node)=>{
319319
consttextNode=node.children[0]
320320
returnMath.min(
@@ -335,7 +335,7 @@ export function parseScriptSetupElements(
335335
result.ast.range[1]=programEndOffset
336336
result.ast.loc.end=locationCalculator.getLocFromIndex(programEndOffset)
337337
if(result.ast.end!=null){
338-
result.ast.end=[scriptSetupElement,scriptElement].reduce(
338+
result.ast.end=[scriptSetupElement,...scriptElements].reduce(
339339
(end,node)=>{
340340
consttextNode=node.children[0]
341341
returnMath.max(
@@ -447,7 +447,7 @@ export function parseScriptSetupElements(
447447
*/
448448
functiongetScriptSetupModuleCodeBlocks(
449449
scriptSetupElement:VElement,
450-
scriptElement:VElement,
450+
scriptElements:VElement[],
451451
sfcCode:string,
452452
linesAndColumns:LinesAndColumns,
453453
parserOptions:ParserOptions,
@@ -459,24 +459,30 @@ function getScriptSetupModuleCodeBlocks(
459459
parserOptions,
460460
)
461461

462-
consttextNode=scriptElement.children[0]
463-
if(textNode==null||textNode.type!=="VText"){
464-
returnscriptSetupCodeBlocks
462+
constcodeBlocks=newCodeBlocks()
463+
464+
for(constscriptElementofscriptElements){
465+
consttextNode=scriptElement.children[0]
466+
if(textNode==null||textNode.type!=="VText"){
467+
continue
468+
}
469+
470+
const[scriptStartOffset,scriptEndOffset]=textNode.range
471+
472+
codeBlocks.append(
473+
sfcCode.slice(scriptStartOffset,scriptEndOffset),
474+
scriptStartOffset,
475+
)
465476
}
466477

467-
const[scriptStartOffset,scriptEndOffset]=textNode.range
468-
constcodeBlocks=newCodeBlocks()
469-
codeBlocks.append(
470-
sfcCode.slice(scriptStartOffset,scriptEndOffset),
471-
scriptStartOffset,
472-
)
473478
if(scriptSetupCodeBlocks==null){
474479
return{ codeBlocks}
475480
}
476481

477482
codeBlocks.appendSplitPunctuators(";")
478483
constscriptSetupOffset=codeBlocks.length
479484
codeBlocks.appendCodeBlocks(scriptSetupCodeBlocks.codeBlocks)
485+
480486
return{
481487
codeBlocks,
482488
scriptSetupBlockRange:[

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp