function-to-string

Extract parameters and body of a function into strings

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.

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'
}

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`
*/

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'

Support this project and others by twolfson via gittip.

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.

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.