Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make the order of target braces consistent #44

Merged
merged 8 commits into from
Dec 14, 2024
33 changes: 19 additions & 14 deletions src/packages/core-parts/finder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ function isTypeof<T extends ZodTypeAny>(arg: unknown, expectedSchema: T): arg is
return expectedSchema.safeParse(arg).success;
}

function filterBraceNodes(
function filterAndSortBraceNodes(
nonCommentNodes: ASTNode[],
prettierIgnoreNodes: ASTNode[],
braceNodes: BraceNode[],
Expand All @@ -34,14 +34,19 @@ function filterBraceNodes(
return ignoringNodeOrNot?.range ?? range;
});

return braceNodes.filter(
({ type: braceType, range: [braceRangeStart, braceRangeEnd] }) =>
[BraceType.OB, BraceType.OBTO, BraceType.CB].includes(braceType) &&
ignoreRanges.every(
([ignoreRangeStart, ignoreRangeEnd]) =>
!(ignoreRangeStart <= braceRangeStart && braceRangeEnd <= ignoreRangeEnd),
),
);
return braceNodes
.filter(
({ type: braceType, range: [braceRangeStart, braceRangeEnd] }) =>
[BraceType.OB, BraceType.OBTO, BraceType.CB].includes(braceType) &&
ignoreRanges.every(
([ignoreRangeStart, ignoreRangeEnd]) =>
!(ignoreRangeStart <= braceRangeStart && braceRangeEnd <= ignoreRangeEnd),
),
)
.sort(
({ range: [formerNodeRangeStart] }, { range: [latterNodeRangeStart] }) =>
formerNodeRangeStart - latterNodeRangeStart,
);
}

export function findTargetBraceNodes(ast: any): BraceNode[] {
Expand Down Expand Up @@ -283,7 +288,7 @@ export function findTargetBraceNodes(ast: any): BraceNode[] {

recursion(ast);

return filterBraceNodes(nonCommentNodes, prettierIgnoreNodes, braceNodes);
return filterAndSortBraceNodes(nonCommentNodes, prettierIgnoreNodes, braceNodes);
}

export function findTargetBraceNodesForHtml(
Expand Down Expand Up @@ -425,7 +430,7 @@ export function findTargetBraceNodesForHtml(

recursion(ast);

return filterBraceNodes(nonCommentNodes, prettierIgnoreNodes, braceNodes);
return filterAndSortBraceNodes(nonCommentNodes, prettierIgnoreNodes, braceNodes);
}

export function findTargetBraceNodesForVue(
Expand Down Expand Up @@ -635,7 +640,7 @@ export function findTargetBraceNodesForVue(

recursion(ast);

return filterBraceNodes(nonCommentNodes, prettierIgnoreNodes, braceNodes);
return filterAndSortBraceNodes(nonCommentNodes, prettierIgnoreNodes, braceNodes);
}

export function findTargetBraceNodesForAstro(
Expand Down Expand Up @@ -845,7 +850,7 @@ export function findTargetBraceNodesForAstro(

recursion(ast);

return filterBraceNodes(nonCommentNodes, prettierIgnoreNodes, braceNodes);
return filterAndSortBraceNodes(nonCommentNodes, prettierIgnoreNodes, braceNodes);
}

export function findTargetBraceNodesForSvelte(ast: any): BraceNode[] {
Expand Down Expand Up @@ -1034,5 +1039,5 @@ export function findTargetBraceNodesForSvelte(ast: any): BraceNode[] {
}
recursion(ast);

return filterBraceNodes(nonCommentNodes, prettierIgnoreNodes, braceNodes);
return filterAndSortBraceNodes(nonCommentNodes, prettierIgnoreNodes, braceNodes);
}
Loading