Skip to content

Commit 2331571

Browse files
committed
Replace recast.transform() call with recast.traverse()
This makes the transform code more flexible and no longer reliant on the `env` parameter, which makes the code easier to test
1 parent 93136af commit 2331571

2 files changed

Lines changed: 11 additions & 7 deletions

File tree

transforms/no-implicit-this/helpers/plugin.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
const recast = require('ember-template-recast');
2+
13
// everything is copy-pasteable to astexplorer.net.
24
// sorta. telemetry needs to be defined.
35
// telemtry can be populated with -mock-telemetry.json
@@ -6,8 +8,8 @@ const KNOWN_HELPERS = require('./known-helpers');
68
/**
79
* plugin entrypoint
810
*/
9-
function transformPlugin(env, options = {}) {
10-
let { builders: b } = env.syntax;
11+
function transform(root, options = {}) {
12+
let b = recast.builders;
1113

1214
let scopedParams = [];
1315
let telemetry = options.telemetry || {};
@@ -73,7 +75,7 @@ function transformPlugin(env, options = {}) {
7375

7476
let inAttrNode = false;
7577

76-
return {
78+
recast.traverse(root, {
7779
Block: paramTracker,
7880
ElementNode: paramTracker,
7981

@@ -143,7 +145,7 @@ function transformPlugin(env, options = {}) {
143145
// <div {{foo bar=BAZ}} />
144146
handleHash(node.hash);
145147
},
146-
};
148+
});
147149
}
148150

149151
function populateInvokeables(telemetry) {
@@ -166,4 +168,4 @@ function populateInvokeables(telemetry) {
166168
return [components, helpers];
167169
}
168170

169-
module.exports = transformPlugin;
171+
module.exports = transform;

transforms/no-implicit-this/index.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ const fs = require('fs');
33

44
const recast = require('ember-template-recast');
55
const { getTelemetry } = require('ember-codemods-telemetry-helpers');
6-
const transformPlugin = require('./helpers/plugin');
6+
const transform = require('./helpers/plugin');
77
const { getOptions: getCLIOptions } = require('codemod-cli');
88
const DEFAULT_OPTIONS = {};
99

@@ -49,5 +49,7 @@ module.exports = function transformer(file /*, api */) {
4949
return;
5050
}
5151

52-
return recast.transform(file.source, env => transformPlugin(env, options)).code;
52+
let root = recast.parse(file.source);
53+
transform(root, options);
54+
return recast.print(root);
5355
};

0 commit comments

Comments
 (0)