Skip to content

Commit 38db42b

Browse files
committed
Update with fixer
1 parent c340132 commit 38db42b

4 files changed

Lines changed: 35 additions & 20 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,7 @@ rules in templates can be disabled with eslint directives with mustache or html
292292
| [no-old-shims](docs/rules/no-old-shims.md) | disallow usage of old shims for modules || 🔧 | |
293293
| [no-string-prototype-extensions](docs/rules/no-string-prototype-extensions.md) | disallow usage of `String` prototype extensions || | |
294294
| [template-deprecated-inline-view-helper](docs/rules/template-deprecated-inline-view-helper.md) | disallow inline {{view}} helper | | 🔧 | |
295-
| [template-deprecated-render-helper](docs/rules/template-deprecated-render-helper.md) | disallow {{render}} helper | | | |
295+
| [template-deprecated-render-helper](docs/rules/template-deprecated-render-helper.md) | disallow {{render}} helper | | 🔧 | |
296296
| [template-no-action](docs/rules/template-no-action.md) | disallow {{action}} helper | | | |
297297
| [template-no-attrs-in-components](docs/rules/template-no-attrs-in-components.md) | disallow attrs in component templates | | | |
298298
| [template-no-link-to-positional-params](docs/rules/template-no-link-to-positional-params.md) | disallow positional params in LinkTo component | | | |

docs/rules/template-deprecated-render-helper.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# ember/template-deprecated-render-helper
22

3+
🔧 This rule is automatically fixable by the [`--fix` CLI option](https://eslint.org/docs/latest/user-guide/command-line-interface#--fix).
4+
35
> **HBS Only**: This rule applies to classic `.hbs` template files only (loose mode). It is not relevant for `gjs`/`gts` files (strict mode), where these patterns cannot occur.
46
57
<!-- end auto-generated rule header -->

lib/rules/template-deprecated-render-helper.js

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ module.exports = {
88
url: 'https://github.com/ember-cli/eslint-plugin-ember/tree/master/docs/rules/template-deprecated-render-helper.md',
99
templateMode: 'loose',
1010
},
11-
fixable: null,
11+
fixable: 'code',
1212
schema: [],
1313
messages: {
1414
deprecated:
@@ -23,6 +23,29 @@ module.exports = {
2323
},
2424

2525
create(context) {
26+
const sourceCode = context.sourceCode;
27+
28+
function buildFix(node) {
29+
const first = node.params[0];
30+
if (!first || first.type !== 'GlimmerStringLiteral') {
31+
return null;
32+
}
33+
const templateName = first.value;
34+
35+
if (node.params.length === 1) {
36+
// {{render 'name'}} → {{name}}
37+
return (fixer) => fixer.replaceText(node, `{{${templateName}}}`);
38+
}
39+
40+
if (node.params.length === 2) {
41+
// {{render 'name' model}} → {{name model=model}}
42+
const model = sourceCode.getText(node.params[1]);
43+
return (fixer) => fixer.replaceText(node, `{{${templateName} model=${model}}}`);
44+
}
45+
46+
return null;
47+
}
48+
2649
function checkForRender(node) {
2750
if (
2851
node.path &&
@@ -32,6 +55,7 @@ module.exports = {
3255
context.report({
3356
node,
3457
messageId: 'deprecated',
58+
fix: buildFix(node),
3559
});
3660
}
3761
}

tests/lib/rules/template-deprecated-render-helper.js

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -23,18 +23,17 @@ ruleTester.run('template-deprecated-render-helper', rule, {
2323
invalid: [
2424
{
2525
code: '<template>{{render "user"}}</template>',
26-
output: null,
26+
output: '<template>{{user}}</template>',
2727
errors: [{ messageId: 'deprecated' }],
2828
},
29-
3029
{
3130
code: "<template>{{render 'ken-griffey'}}</template>",
32-
output: null,
31+
output: '<template>{{ken-griffey}}</template>',
3332
errors: [{ messageId: 'deprecated' }],
3433
},
3534
{
3635
code: "<template>{{render 'baseball-player' pitcher}}</template>",
37-
output: null,
36+
output: '<template>{{baseball-player model=pitcher}}</template>',
3837
errors: [{ messageId: 'deprecated' }],
3938
},
4039
],
@@ -63,23 +62,13 @@ hbsRuleTester.run('template-deprecated-render-helper', rule, {
6362
invalid: [
6463
{
6564
code: "{{render 'ken-griffey'}}",
66-
output: null,
67-
errors: [
68-
{
69-
message:
70-
'The render helper is deprecated in favor of using components. See https://emberjs.com/deprecations/v2.x/#toc_code-render-code-helper',
71-
},
72-
],
65+
output: '{{ken-griffey}}',
66+
errors: [{ messageId: 'deprecated' }],
7367
},
7468
{
7569
code: "{{render 'baseball-player' pitcher}}",
76-
output: null,
77-
errors: [
78-
{
79-
message:
80-
'The render helper is deprecated in favor of using components. See https://emberjs.com/deprecations/v2.x/#toc_code-render-code-helper',
81-
},
82-
],
70+
output: '{{baseball-player model=pitcher}}',
71+
errors: [{ messageId: 'deprecated' }],
8372
},
8473
],
8574
});

0 commit comments

Comments
 (0)