Skip to content

Instantly share code, notes, and snippets.

@mofas
Created March 26, 2016 09:37
Show Gist options
  • Save mofas/8320883b83ee1fb31ea8 to your computer and use it in GitHub Desktop.
Save mofas/8320883b83ee1fb31ea8 to your computer and use it in GitHub Desktop.
CodeMod: remove refs.getDOMNode() expression
var getDOMNode = 123;
const getDOMNode = () => {
return this.refs;
}
var test = getDOMNode();
getOffset(this.refs.root.getDOMNode());
this.refs.presetMenu.getDOMNode();
this.refs.root;
export default function transformer(file, api) {
const j = api.jscodeshift;
const {expression, statement, statements} = j.template;
var root = j(file.source);
return root
.find(j.Identifier, {name: "getDOMNode"})
.filter(p => {
let callFromRefs = false;
if(p.parent && p.parent.value.type === 'MemberExpression'){
const parentNode = p.parent.value;
if(parentNode.object && parentNode.object.object &&
parentNode.object.object.property &&
parentNode.object.object.property.name === 'refs'
){
callFromRefs = true;
}
}
return callFromRefs;
})
.forEach(p => {
j(p.parent.parent).replaceWith(
j.memberExpression(
j.memberExpression(
j.identifier("this"),
j.identifier("refs")
),
j.identifier(p.parent.parent.value.callee.object.property.name)
)
)
})
.toSource();
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment