{"versions":{"1.0.0":{"name":"glsl-token-functions","version":"1.0.0","description":"Extract function definitions from an array of GLSL tokens.","main":"index.js","license":"MIT","scripts":{"test":"node test | tap-spec"},"author":{"name":"Hugh Kennedy","email":"hughskennedy@gmail.com","url":"http://github.com/hughsk"},"dependencies":{},"devDependencies":{"glsl-token-string":"^1.0.1","glsl-tokenizer":"^2.0.2","tap-spec":"^4.1.0","tape":"^4.2.2"},"repository":{"type":"git","url":"git://github.com/stackgl/glsl-token-functions.git"},"keywords":["ecosystem:stackgl","glsl","tokens","analyze","function","language","shader","arguments"],"homepage":"https://github.com/stackgl/glsl-token-functions","bugs":{"url":"https://github.com/stackgl/glsl-token-functions/issues"},"gitHead":"05d5557bba20d847b4a1a9c5dabbadaad29b9f56","_id":"glsl-token-functions@1.0.0","_shasum":"313dc14b264ce43ca540d9235fe5000ed7801ec2","_from":".","_npmVersion":"2.14.4","_nodeVersion":"4.1.2","_npmUser":{"name":"anonymous","email":"hughskennedy@gmail.com"},"dist":{"shasum":"313dc14b264ce43ca540d9235fe5000ed7801ec2","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/glsl-token-functions/-/glsl-token-functions-1.0.0.tgz","integrity":"sha512-5OzdnkxvylweGKmDzV9PrI3wdYOXpJ/Y8Ayo2LveIcFPD2Fv3UTSq1+o/5yN5EZ471YP84ldLmjrx3SaGPK8hA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCeUwjJnViDM+jAZ+HmnnAi7Bj4/3ioYuh3Hw4skbLwhgIhAN52To2HRs93MkCBuLsZzmg6pqJy9XV+P7YgPGggX7NC"}]},"maintainers":[{"name":"anonymous","email":"hughskennedy@gmail.com"}],"directories":{},"contributors":[]},"1.0.1":{"name":"glsl-token-functions","version":"1.0.1","description":"Extract function definitions from an array of GLSL tokens.","main":"index.js","license":"MIT","scripts":{"test":"node test | tap-spec","posttest":"standard"},"author":{"name":"Hugh Kennedy","email":"hughskennedy@gmail.com","url":"http://github.com/hughsk"},"dependencies":{},"devDependencies":{"glsl-token-string":"^1.0.1","glsl-tokenizer":"^2.0.2","standard":"^8.4.0","tap-spec":"^4.1.0","tape":"^4.2.2"},"repository":{"type":"git","url":"git://github.com/stackgl/glsl-token-functions.git"},"keywords":["ecosystem:stackgl","glsl","tokens","analyze","function","language","shader","arguments"],"homepage":"https://github.com/stackgl/glsl-token-functions","bugs":{"url":"https://github.com/stackgl/glsl-token-functions/issues"},"gitHead":"cbefc651d13b431732954954f3af9764cb349078","_id":"glsl-token-functions@1.0.1","_shasum":"2f1614746b96e14f059a6d62af79b65457f0c9a0","_from":".","_npmVersion":"3.10.3","_nodeVersion":"6.7.0","_npmUser":{"name":"anonymous","email":"hughskennedy@gmail.com"},"dist":{"shasum":"2f1614746b96e14f059a6d62af79b65457f0c9a0","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/glsl-token-functions/-/glsl-token-functions-1.0.1.tgz","integrity":"sha512-EigGhp1g+aUVeUNY7H1o5tL/bnwIB3/FcRREPr2E7Du+/UDXN24hDkaZ3e4aWHDjHr9lJ6YHXMISkwhUYg9UOg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDSthOfGvemDqP60kaAFaMtkMFM+4ah5ZHh4AbPeJDNgIgZvvJq3yTg/r2AJa8d74L0stLShMkm80S/U/nigvM200="}]},"maintainers":[{"name":"anonymous","email":"hughskennedy@gmail.com"}],"_npmOperationalInternal":{"host":"packages-16-east.internal.npmjs.com","tmp":"tmp/glsl-token-functions-1.0.1.tgz_1476750125940_0.08274664985947311"},"directories":{},"contributors":[]}},"dist-tags":{"latest":"1.0.1"},"name":"glsl-token-functions","time":{"modified":"2024-12-29T00:49:21.133Z","created":"2022-01-27T08:10:37.990Z","1.0.0":"2015-11-08T05:32:22.717Z","1.0.1":"2016-10-18T00:22:09.110Z"},"readme":"# glsl-token-functions\n\n[![stable](http://badges.github.io/stability-badges/dist/stable.svg)](http://github.com/badges/stability-badges)\n\nExtract function definitions from an array of GLSL tokens from [glsl-tokenizer](https://github.com/stackgl/glsl-tokenizer).\n\nYou can use this to grab all of the functions in a shader, along with their arguments, return value and name.\n\n## Usage\n\n[![NPM](https://nodei.co/npm/glsl-token-functions.png)](https://www.npmjs.com/package/glsl-token-functions)\n\n### `functions = tokenFunctions(tokens)`\n\nGiven an array of `tokens` produced by [glsl-tokenizer](https://github.com/stackgl/glsl-tokenizer), return an array of function data in the following format:\n\n``` javascript\n{\n  name: 'functionName',\n  type: 'vec4'\n  body: [100, 110],\n  args: [98, 99],\n  outer: [80, 111]\n}\n```\n\n#### `fn.name`\n\nThe function name. For example, the following function would be `main`:\n\n``` glsl\nvoid main();\n```\n\n#### `fn.type`\n\nThe function return type. For example, the following function would be `vec2`:\n\n``` glsl\nvec2 getModel(vec3 p);\n```\n\nNote that this supports structs too! The following function's `type` would be `Ray`:\n\n``` glsl\nstruct Ray {\n  vec3 ro;\n  vec3 rd;\n}\n\nRay getCamera(vec3 origin);\n```\n\n#### `fn.body`\n\nThe start and end index in the original tokens array of the function body, i.e. the part between the curly braces. If the function doesn't have a body, this will be `false`.\n\nFor example:\n\n``` javascript\nconst tokenFunctions = require('glsl-token-functions')\nconst toString = require('glsl-token-string')\nconst tokenize = require('glsl-tokenizer')\nconst src = `\nvoid main();\nvoid main() { gl_FragColor = vec4(1); }\n`\n\nconst tokens = tokenize(src)\nconst functions = tokenFunctions(tokens)\n\nconsole.log(getBody(functions[0])) // false\nconsole.log(getBody(functions[1])) // \" gl_FragColor = vec4(1); \"\n\nfunction getBody () {\n  return toString(tokens.slice(fn.body[0], fn.body[1]))\n}\n```\n\n#### `fn.args`\n\nThe start and end index in the original tokens array of the function arguments, i.e. the part including the parenthesis in the function definition.\n\nFor example:\n\n``` javascript\nconst tokenFunctions = require('glsl-token-functions')\nconst toString = require('glsl-token-string')\nconst tokenize = require('glsl-tokenizer')\nconst src = `\nvoid main();\nvoid drawImage(vec3 ro, vec3 rd);\n`\n\nconst tokens = tokenize(src)\nconst functions = tokenFunctions(tokens)\n\nconsole.log(getArgs(functions[0])) // \"()\"\nconsole.log(getArgs(functions[1])) // \"(vec3 ro, vec3 rd)\"\n\nfunction getArgs () {\n  return toString(tokens.slice(fn.args[0], fn.args[1]))\n}\n```\n\n#### `fn.outer`\n\nThe start and end index in the original tokens array of the entire function.\n\nFor example:\n\n``` javascript\nconst tokenFunctions = require('glsl-token-functions')\nconst toString = require('glsl-token-string')\nconst tokenize = require('glsl-tokenizer')\nconst src = `\nvoid main();\nvoid main() { gl_FragColor = vec4(1); }\n`\n\nconst tokens = tokenize(src)\nconst functions = tokenFunctions(tokens)\n\nconsole.log(getOuter(functions[0])) // \"void main();\"\nconsole.log(getOuter(functions[1])) // \"void main() { gl_FragColor = vec4(1); }\"\n\nfunction getOuter () {\n  return toString(tokens.slice(fn.outer[0], fn.outer[1]))\n}\n```\n\n## Contributing\n\nSee [stackgl/contributing](https://github.com/stackgl/contributing) for details.\n\n## License\n\nMIT. See [LICENSE.md](http://github.com/stackgl/glsl-token-functions/blob/master/LICENSE.md) for details.","users":{}}