Skip to content

Instantly share code, notes, and snippets.

@JamieMason
Last active August 29, 2015 13:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JamieMason/9051177 to your computer and use it in GitHub Desktop.
Save JamieMason/9051177 to your computer and use it in GitHub Desktop.
Replace return statements in a JavaScript syntax tree
function replaceReturnedValue(returnStatement) {
returnStatement.type = 'ExpressionStatement',
returnStatement.expression = {
type: 'CallExpression',
callee: {
type: 'MemberExpression',
computed: false,
object: {
type: 'Identifier',
name: '_map'
},
property: {
type: 'Identifier',
name: 'push'
}
},
arguments: [returnStatement.argument]
};
delete returnStatement.argument;
return returnStatement;
}
function replaceReturnStatement(returnStatement) {
returnStatement.type = 'ExpressionStatement',
returnStatement.expression = {
type: 'Literal',
value: 'noop',
raw: '"noop"'
};
return returnStatement;
}
function handleReturnStatement(returnStatement) {
var returnHasValue = !! returnStatement.argument;
return returnHasValue ? replaceReturnedValue(returnStatement) : replaceReturnStatement(returnStatement);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment