function-to-string
v0.2.0
Published
Extract parameters and body of a function into strings
Downloads
41
Readme
function-to-string
Extract parameters and body of a function into strings
This was built as part of the gifsockets project to pass arbitrary canvas commands with a callback to a rgba generating PhantomJS server.
Getting Started
Install the module with: npm install function-to-string
var functionToString = require('function-to-string');
functionToString(function hello(world) {
// This is a comment
return 'some text';
});
// Returns:
{
name: 'hello',
params: ['world'],
body: '\n // This is a comment\n return \'some text\';\n'
}
Documentation
We chose to use esprima over regular expression magic. If you are interested in the regular expression route, checkout AngularJS' source code
functionToString
exposes a single function
functionToString(fn)
/**
* Parses function into AST, extracts parameters and body, and returns information
* @param {Function} fn Function to parse
* @returns {Object} retObj
* @returns {String} retObj.name Name of `fn`
* @returns {String[]} retObj.params Array of parameters for `fn`
* @returns {String} retObj.body Content of `fn`
*/
Reconstructing a function
Functions can be reconstructed via the Function
constructor:
var info = {
name: 'hello',
params: ['world'],
body: '\n // This is a comment\n return \'some text\';\n'
};
var hello = Function.apply({}, info.params.concat([info.body]));
console.log(hello()); // 'some text'
Donating
Support this project and others by twolfson via gittip.
Contributing
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint via grunt and test via npm test
.
Unlicense
As of Nov 16 2013, Todd Wolfson has released this repository and its contents to the public domain.
It has been released under the UNLICENSE.