Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
takurinton committed Feb 6, 2024
1 parent 1674ddb commit abb76be
Show file tree
Hide file tree
Showing 2 changed files with 102 additions and 26 deletions.
34 changes: 34 additions & 0 deletions src/__tests__/suffix.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,16 @@ ruleTester.run("vars-name/suffix", suffix, {
filename: "Component.tsx",
code: "function Component({ name: name }: { name: string }) { return <div>{name}</div>; }",
},
// デフォルト値を入れている場合(arrow function)
{
filename: "Component.tsx",
code: "const Component = ({ name = 'foo' }: { name: string }) => <div>{name}</div>;",
},
// デフォルト値を入れている場合(function)
{
filename: "Component.tsx",
code: "function Component({ name = 'foo' }: { name: string }) { return <div>{name}</div>; }",
},
// .tsファイルは対象外
{
filename: "foo.ts",
Expand Down Expand Up @@ -102,5 +112,29 @@ ruleTester.run("vars-name/suffix", suffix, {
},
],
},
// デフォルト値を入れている場合(arrow function)
{
filename: "Component.tsx",
code: "const Component = ({ name: _name = 'foo' }: { name: string }) => <div>{_name}</div>;",
output:
"const Component = ({ name: nameProp = 'foo' }: { name: string }) => <div>{_name}</div>;",
errors: [
{
messageId: "suffix",
},
],
},
// デフォルト値を入れている場合(function)
{
filename: "Component.tsx",
code: "function Component({ name: _name = 'foo' }: { name: string }) { return <div>{_name}</div>; }",
output:
"function Component({ name: nameProp = 'foo' }: { name: string }) { return <div>{_name}</div>; }",
errors: [
{
messageId: "suffix",
},
],
},
],
});
94 changes: 68 additions & 26 deletions src/rules/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,19 +82,40 @@ export const suffix: TSESLint.RuleModule<MessageId, []> = {
param.properties.forEach((property) => {
if (property.type === "Property") {
const { key, value } = property;
if (key.type === "Identifier" && value.type === "Identifier") {
if (key.name === value.name) {
return;
}
if (`${key.name}Prop` !== value.name) {
context.report({
node: value,
messageId: "suffix",
// fixer書いてるけど、元の prop name が使われてる箇所までは直せない
fix: (fixer) => {
return fixer.replaceText(value, `${key.name}Prop`);
},
});
if (key.type === "Identifier") {
if (value.type === "Identifier") {
if (key.name === value.name) {
return;
}
if (`${key.name}Prop` !== value.name) {
context.report({
node: value,
messageId: "suffix",
// fixer書いてるけど、元の prop name が使われてる箇所までは直せない
fix: (fixer) => {
return fixer.replaceText(value, `${key.name}Prop`);
},
});
}
} else if (value.type === "AssignmentPattern") {
if (value.left.type === "Identifier") {
if (key.name === value.left.name) {
return;
}
if (`${key.name}Prop` !== value.left.name) {
context.report({
node: value.left,
messageId: "suffix",
// fixer書いてるけど、元の prop name が使われてる箇所までは直せない
fix: (fixer) => {
return fixer.replaceText(
value.left,
`${key.name}Prop`
);
},
});
}
}
}
}
}
Expand All @@ -108,19 +129,40 @@ export const suffix: TSESLint.RuleModule<MessageId, []> = {
param.properties.forEach((property) => {
if (property.type === "Property") {
const { key, value } = property;
if (key.type === "Identifier" && value.type === "Identifier") {
if (key.name === value.name) {
return;
}
if (`${key.name}Prop` !== value.name) {
context.report({
node: value,
messageId: "suffix",
// fixer書いてるけど、元の prop name が使われてる箇所までは直せない
fix: (fixer) => {
return fixer.replaceText(value, `${key.name}Prop`);
},
});
if (key.type === "Identifier") {
if (value.type === "Identifier") {
if (key.name === value.name) {
return;
}
if (`${key.name}Prop` !== value.name) {
context.report({
node: value,
messageId: "suffix",
// fixer書いてるけど、元の prop name が使われてる箇所までは直せない
fix: (fixer) => {
return fixer.replaceText(value, `${key.name}Prop`);
},
});
}
} else if (value.type === "AssignmentPattern") {
if (value.left.type === "Identifier") {
if (key.name === value.left.name) {
return;
}
if (`${key.name}Prop` !== value.left.name) {
context.report({
node: value.left,
messageId: "suffix",
// fixer書いてるけど、元の prop name が使われてる箇所までは直せない
fix: (fixer) => {
return fixer.replaceText(
value.left,
`${key.name}Prop`
);
},
});
}
}
}
}
}
Expand Down

0 comments on commit abb76be

Please sign in to comment.