Package Exports
- generate-function
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (generate-function) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
generate-function
Module that helps you write generated functions in Node
npm install generate-function
Disclamer
Writing code that generates code is hard. You should only use this if you really, really, really need this for performance reasons (like schema validators / parsers etc).
Usage
var genfun = require('generate-function')
var addNumber = function(val) {
var fn = genfun()
('function add(n) {')
('return n + %d', val) // supports format strings to insert values
('}')
return fn.toFunction() // will compile the function
}
var add2 = addNumber(2)
console.log('1+2=', add2(1))
console.log(add2.toString()) // prints the generated function
If you need to close over variables in your generated function pass them to toFunction(scope)
var multiply = function(a, b) {
return a * b
}
var addAndMultiplyNumber = function(val) {
var fn = genfun()
('function(n) {')
('if (typeof n !== "number") {') // ending a line with { will indent the source
('throw new Error("argument should be a number")')
('}')
('var result = multiply(%d, n+%d)', val, val)
('return result')
('}')
// use fn.toString() if you want to see the generated source
return fn.toFunction({
multiply: multiply
})
}
var addAndMultiply2 = addAndMultiplyNumber(2)
console.log('(3 + 2) * 2 =', addAndMultiply2(3))
Related
See generate-object-property if you need to safely generate code that can be used to reference an object property
License
MIT