{"_id":"generate-function","_rev":"14-49553af465edc4302a6acb27408b4e1e","name":"generate-function","description":"Module that helps you write generated functions in Node","dist-tags":{"latest":"2.0.0"},"versions":{"0.0.0":{"name":"generate-function","version":"0.0.0","description":"Module that helps you write generated functions in Node","main":"index.js","scripts":{"test":"tape test.js"},"repository":{"type":"git","url":"https://github.com/mafintosh/generate-function"},"keywords":["generate","code","generation","function","performance"],"author":{"name":"Mathias Buus"},"license":"MIT","bugs":{"url":"https://github.com/mafintosh/generate-function/issues"},"homepage":"https://github.com/mafintosh/generate-function","devDependencies":{"tape":"^2.13.4"},"gitHead":"f4dc06374d18af82d530b3aecc7ba3cf4803188d","_id":"generate-function@0.0.0","_shasum":"fd561eece1948ea5ee9138d50ac479d18f7f7822","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"maintainers":[{"name":"mafintosh","email":"mathiasbuus@gmail.com"}],"dist":{"shasum":"fd561eece1948ea5ee9138d50ac479d18f7f7822","tarball":"http://registry.npmjs.org/generate-function/-/generate-function-0.0.0.tgz"},"directories":{}},"1.0.0":{"name":"generate-function","version":"1.0.0","description":"Module that helps you write generated functions in Node","main":"index.js","scripts":{"test":"tape test.js"},"repository":{"type":"git","url":"https://github.com/mafintosh/generate-function"},"keywords":["generate","code","generation","function","performance"],"author":{"name":"Mathias Buus"},"license":"MIT","bugs":{"url":"https://github.com/mafintosh/generate-function/issues"},"homepage":"https://github.com/mafintosh/generate-function","devDependencies":{"tape":"^2.13.4"},"gitHead":"5a757a46bb7121e203a25ea301ca3ef6a2091411","_id":"generate-function@1.0.0","_shasum":"1e6af3d0ad50f35050b1a9a1c056dad4a2c7f5c5","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"maintainers":[{"name":"mafintosh","email":"mathiasbuus@gmail.com"}],"dist":{"shasum":"1e6af3d0ad50f35050b1a9a1c056dad4a2c7f5c5","tarball":"http://registry.npmjs.org/generate-function/-/generate-function-1.0.0.tgz"},"directories":{}},"1.0.1":{"name":"generate-function","version":"1.0.1","description":"Module that helps you write generated functions in Node","main":"index.js","scripts":{"test":"tape test.js"},"repository":{"type":"git","url":"https://github.com/mafintosh/generate-function"},"keywords":["generate","code","generation","function","performance"],"author":{"name":"Mathias Buus"},"license":"MIT","bugs":{"url":"https://github.com/mafintosh/generate-function/issues"},"homepage":"https://github.com/mafintosh/generate-function","devDependencies":{"tape":"^2.13.4"},"gitHead":"17c6c09d5ea81fc783481d736388201644962842","_id":"generate-function@1.0.1","_shasum":"3c53e1a681619063c3bac744af8cd134d9dc6efa","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"maintainers":[{"name":"mafintosh","email":"mathiasbuus@gmail.com"}],"dist":{"shasum":"3c53e1a681619063c3bac744af8cd134d9dc6efa","tarball":"http://registry.npmjs.org/generate-function/-/generate-function-1.0.1.tgz"},"directories":{}},"1.0.2":{"name":"generate-function","version":"1.0.2","description":"Module that helps you write generated functions in Node","main":"index.js","scripts":{"test":"tape test.js"},"repository":{"type":"git","url":"https://github.com/mafintosh/generate-function"},"keywords":["generate","code","generation","function","performance"],"author":{"name":"Mathias Buus"},"license":"MIT","bugs":{"url":"https://github.com/mafintosh/generate-function/issues"},"homepage":"https://github.com/mafintosh/generate-function","devDependencies":{"tape":"^2.13.4"},"gitHead":"f74a9edbbaced7cbb481bbadd18b36b1ae233754","_id":"generate-function@1.0.2","_shasum":"b6d5748ff5f35567d82908e84e4a921fad23c6d6","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"maintainers":[{"name":"mafintosh","email":"mathiasbuus@gmail.com"}],"dist":{"shasum":"b6d5748ff5f35567d82908e84e4a921fad23c6d6","tarball":"http://registry.npmjs.org/generate-function/-/generate-function-1.0.2.tgz"},"directories":{}},"1.0.3":{"name":"generate-function","version":"1.0.3","description":"Module that helps you write generated functions in Node","main":"index.js","scripts":{"test":"tape test.js"},"repository":{"type":"git","url":"https://github.com/mafintosh/generate-function"},"keywords":["generate","code","generation","function","performance"],"author":{"name":"Mathias Buus"},"license":"MIT","bugs":{"url":"https://github.com/mafintosh/generate-function/issues"},"homepage":"https://github.com/mafintosh/generate-function","devDependencies":{"tape":"^2.13.4"},"gitHead":"ed65d50801cf4a6ccd9f2272caa262d84fd300ee","_id":"generate-function@1.0.3","_shasum":"2083919b224afe5cb884b91693744efd2bf9bb03","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"maintainers":[{"name":"mafintosh","email":"mathiasbuus@gmail.com"}],"dist":{"shasum":"2083919b224afe5cb884b91693744efd2bf9bb03","tarball":"http://registry.npmjs.org/generate-function/-/generate-function-1.0.3.tgz"},"directories":{}},"1.1.0":{"name":"generate-function","version":"1.1.0","description":"Module that helps you write generated functions in Node","main":"index.js","scripts":{"test":"tape test.js"},"repository":{"type":"git","url":"https://github.com/mafintosh/generate-function"},"keywords":["generate","code","generation","function","performance"],"author":{"name":"Mathias Buus"},"license":"MIT","bugs":{"url":"https://github.com/mafintosh/generate-function/issues"},"homepage":"https://github.com/mafintosh/generate-function","devDependencies":{"tape":"^2.13.4"},"gitHead":"99be057fb14f2e7f87afa116e5ca4d40a379c080","_id":"generate-function@1.1.0","_shasum":"54c21b080192b16d9877779c5bb81666e772365f","_from":".","_npmVersion":"1.4.21","_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"maintainers":[{"name":"mafintosh","email":"mathiasbuus@gmail.com"}],"dist":{"shasum":"54c21b080192b16d9877779c5bb81666e772365f","tarball":"http://registry.npmjs.org/generate-function/-/generate-function-1.1.0.tgz"},"directories":{}},"2.0.0":{"name":"generate-function","version":"2.0.0","description":"Module that helps you write generated functions in Node","main":"index.js","scripts":{"test":"tape test.js"},"repository":{"type":"git","url":"https://github.com/mafintosh/generate-function"},"keywords":["generate","code","generation","function","performance"],"author":{"name":"Mathias Buus"},"license":"MIT","bugs":{"url":"https://github.com/mafintosh/generate-function/issues"},"homepage":"https://github.com/mafintosh/generate-function","devDependencies":{"tape":"^2.13.4"},"gitHead":"3d5fc8de5859be95f58e3af9bfb5f663edd95149","_id":"generate-function@2.0.0","_shasum":"6858fe7c0969b7d4e9093337647ac79f60dfbe74","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"mafintosh","email":"mathiasbuus@gmail.com"},"maintainers":[{"name":"mafintosh","email":"mathiasbuus@gmail.com"}],"dist":{"shasum":"6858fe7c0969b7d4e9093337647ac79f60dfbe74","tarball":"http://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz"},"directories":{}}},"readme":"# generate-function\n\nModule that helps you write generated functions in Node\n\n```\nnpm install generate-function\n```\n\n[![build status](http://img.shields.io/travis/mafintosh/generate-function.svg?style=flat)](http://travis-ci.org/mafintosh/generate-function)\n\n## Disclamer\n\nWriting code that generates code is hard.\nYou should only use this if you really, really, really need this for performance reasons (like schema validators / parsers etc).\n\n## Usage\n\n``` js\nvar genfun = require('generate-function')\n\nvar addNumber = function(val) {\n var fn = genfun()\n ('function add(n) {')\n ('return n + %d', val) // supports format strings to insert values\n ('}')\n\n return fn.toFunction() // will compile the function\n}\n\nvar add2 = addNumber(2)\n\nconsole.log('1+2=', add2(1))\nconsole.log(add2.toString()) // prints the generated function\n```\n\nIf you need to close over variables in your generated function pass them to `toFunction(scope)`\n\n``` js\nvar multiply = function(a, b) {\n return a * b\n}\n\nvar addAndMultiplyNumber = function(val) {\n var fn = genfun()\n ('function(n) {')\n ('if (typeof n !== \"number\") {') // ending a line with { will indent the source\n ('throw new Error(\"argument should be a number\")')\n ('}')\n ('var result = multiply(%d, n+%d)', val, val)\n ('return result')\n ('}')\n\n // use fn.toString() if you want to see the generated source\n\n return fn.toFunction({\n multiply: multiply\n })\n}\n\nvar addAndMultiply2 = addAndMultiplyNumber(2)\n\nconsole.log('(3 + 2) * 2 =', addAndMultiply2(3))\n```\n\n## Related\n\nSee [generate-object-property](https://github.com/mafintosh/generate-object-property) if you need to safely generate code that\ncan be used to reference an object property\n\n## License\n\nMIT","maintainers":[{"name":"mafintosh","email":"mathiasbuus@gmail.com"}],"time":{"modified":"2014-08-21T16:53:53.661Z","created":"2014-07-30T17:17:07.759Z","0.0.0":"2014-07-30T17:17:07.759Z","1.0.0":"2014-07-30T17:25:00.747Z","1.0.1":"2014-07-30T18:22:50.528Z","1.0.2":"2014-07-30T21:39:22.512Z","1.0.3":"2014-08-01T09:04:48.912Z","1.1.0":"2014-08-01T09:50:30.055Z","2.0.0":"2014-08-21T16:53:53.661Z"},"homepage":"https://github.com/mafintosh/generate-function","keywords":["generate","code","generation","function","performance"],"repository":{"type":"git","url":"https://github.com/mafintosh/generate-function"},"author":{"name":"Mathias Buus"},"bugs":{"url":"https://github.com/mafintosh/generate-function/issues"},"license":"MIT","readmeFilename":"README.md","_attachments":{},"_etag":"\"12PLKYR2FNJXHNF7XFY76TLP0\""}