{"versions":{"1.0.2":{"name":"glsl-token-descope","version":"1.0.2","description":"\"Descope\" an array of GLSL tokens such that they can be safely inlined alongside within another shader without causing any global variable conflicts.","main":"index.js","license":"MIT","scripts":{"test":"node test/index.js | tap-spec","eyeball":"node test/eyeball.js"},"author":{"name":"Hugh Kennedy","email":"hughskennedy@gmail.com","url":"http://hughsk.io/"},"dependencies":{"glsl-token-assignments":"^2.0.0","glsl-token-depth":"^1.1.0","glsl-token-properties":"^1.0.0","glsl-token-scope":"^1.1.0"},"devDependencies":{"6to5":"^2.5.0","chalk":"^0.5.1","glsl-token-string":"^1.0.0","glsl-tokenizer":"^2.0.0","tap-spec":"^2.1.2","tape":"^3.0.3"},"repository":{"type":"git","url":"git://github.com/stackgl/glsl-token-descope.git"},"keywords":["ecosystem:stackgl"],"homepage":"https://github.com/stackgl/glsl-token-descope","bugs":{"url":"https://github.com/stackgl/glsl-token-descope/issues"},"gitHead":"31673dcc087f308707a8d0e8cd6445dbb11554de","_id":"glsl-token-descope@1.0.2","_shasum":"0fc90ab326186b82f597b2e77dc9e21efcd32076","_from":".","_npmVersion":"2.5.0","_nodeVersion":"0.10.36","_npmUser":{"name":"anonymous","email":"hughskennedy@gmail.com"},"maintainers":[{"name":"anonymous","email":"arch.mojtaba.samimi@gmail.com"},{"name":"anonymous","email":"post.ben.here@gmail.com"},{"name":"anonymous","email":"df.creative@gmail.com"},{"name":"anonymous","email":"arnebackeric@gmail.com"},{"name":"anonymous","email":"renaudeau.gaetan@gmail.com"},{"name":"anonymous","email":"hughskennedy@gmail.com"},{"name":"anonymous","email":"dave.des@gmail.com"},{"name":"anonymous","email":"me@mikkoh.com"},{"name":"anonymous","email":"mikolalysenko@gmail.com"},{"name":"anonymous","email":"syed.reza.ali@gmail.com"},{"name":"anonymous","email":"rsreusser@gmail.com"},{"name":"anonymous","email":"tatum.creative@gmail.com"},{"name":"anonymous","email":"thibaut.seguy@gmail.com"},{"name":"anonymous","email":"marcin.ignac@gmail.com"},{"name":"anonymous","email":"wwwtyro@gmail.com"},{"name":"anonymous","email":"i@yoshuawuyts.com"}],"dist":{"shasum":"0fc90ab326186b82f597b2e77dc9e21efcd32076","size":3204,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/glsl-token-descope/-/glsl-token-descope-1.0.2.tgz","integrity":"sha512-kS2PTWkvi/YOeicVjXGgX5j7+8N7e56srNDEHDTVZ1dcESmbmpmgrnpjPcjxJjMxh56mSXYoFdZqb90gXkGjQw=="},"directories":{},"publish_time":1425685631012,"_hasShrinkwrap":false,"_cnpm_publish_time":1425685631012,"_cnpmcore_publish_time":"2021-12-16T22:19:20.897Z","contributors":[]},"1.0.1":{"name":"glsl-token-descope","version":"1.0.1","description":"\"Descope\" an array of GLSL tokens such that they can be safely inlined alongside within another shader without causing any global variable conflicts.","main":"index.js","license":"MIT","scripts":{"test":"node test/index.js | tap-spec","eyeball":"node test/eyeball.js"},"author":{"name":"Hugh Kennedy","email":"hughskennedy@gmail.com","url":"http://hughsk.io/"},"dependencies":{"glsl-token-assignments":"^2.0.0","glsl-token-depth":"^1.1.0","glsl-token-properties":"^1.0.0","glsl-token-scope":"^1.1.0"},"devDependencies":{"6to5":"^2.5.0","chalk":"^0.5.1","glsl-token-string":"^1.0.0","glsl-tokenizer":"git://github.com/stackgl/glsl-tokenizer#2.0.0","tap-spec":"^2.1.2","tape":"^3.0.3"},"repository":{"type":"git","url":"git://github.com/stackgl/glsl-token-descope.git"},"keywords":["ecosystem:stackgl"],"homepage":"https://github.com/stackgl/glsl-token-descope","bugs":{"url":"https://github.com/stackgl/glsl-token-descope/issues"},"gitHead":"91af357acbea822f287554ccf71eaac91b6b43d6","_id":"glsl-token-descope@1.0.1","_shasum":"4e39938e09e5384bb96323de7465e2021fd2785a","_from":".","_npmVersion":"2.1.16","_nodeVersion":"0.10.28","_npmUser":{"name":"anonymous","email":"hughskennedy@gmail.com"},"maintainers":[{"name":"anonymous","email":"arch.mojtaba.samimi@gmail.com"},{"name":"anonymous","email":"post.ben.here@gmail.com"},{"name":"anonymous","email":"df.creative@gmail.com"},{"name":"anonymous","email":"arnebackeric@gmail.com"},{"name":"anonymous","email":"renaudeau.gaetan@gmail.com"},{"name":"anonymous","email":"hughskennedy@gmail.com"},{"name":"anonymous","email":"dave.des@gmail.com"},{"name":"anonymous","email":"me@mikkoh.com"},{"name":"anonymous","email":"mikolalysenko@gmail.com"},{"name":"anonymous","email":"syed.reza.ali@gmail.com"},{"name":"anonymous","email":"rsreusser@gmail.com"},{"name":"anonymous","email":"tatum.creative@gmail.com"},{"name":"anonymous","email":"thibaut.seguy@gmail.com"},{"name":"anonymous","email":"marcin.ignac@gmail.com"},{"name":"anonymous","email":"wwwtyro@gmail.com"},{"name":"anonymous","email":"i@yoshuawuyts.com"}],"dist":{"shasum":"4e39938e09e5384bb96323de7465e2021fd2785a","size":3118,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/glsl-token-descope/-/glsl-token-descope-1.0.1.tgz","integrity":"sha512-V+T0H/l++jaRsDP6e6+NSYS1vLrzDhpq2A9/lCI/zIPwhxTN5piDm1yBK6KVpAXDqnxDsxyO2+25qDBOCRH9uw=="},"directories":{},"publish_time":1420413812390,"_hasShrinkwrap":false,"_cnpm_publish_time":1420413812390,"_cnpmcore_publish_time":"2021-12-16T22:19:21.100Z","contributors":[]},"1.0.0":{"name":"glsl-token-descope","version":"1.0.0","description":"\"Descope\" an array of GLSL tokens such that they can be safely inlined alongside within another shader without causing any global variable conflicts.","main":"index.js","license":"MIT","scripts":{"test":"node test/index.js | tap-spec","eyeball":"node test/eyeball.js"},"author":{"name":"Hugh Kennedy","email":"hughskennedy@gmail.com","url":"http://hughsk.io/"},"dependencies":{"glsl-token-assignments":"^2.0.0","glsl-token-depth":"^1.1.0","glsl-token-properties":"^1.0.0","glsl-token-scope":"^1.1.0"},"devDependencies":{"6to5":"^2.5.0","chalk":"^0.5.1","glsl-token-string":"^1.0.0","glsl-tokenizer":"git://github.com/stackgl/glsl-tokenizer#2.0.0","tap-spec":"^2.1.2","tape":"^3.0.3"},"repository":{"type":"git","url":"git://github.com/stackgl/glsl-token-descope.git"},"keywords":["ecosystem:stackgl"],"homepage":"https://github.com/stackgl/glsl-token-descope","bugs":{"url":"https://github.com/stackgl/glsl-token-descope/issues"},"gitHead":"3313efc5cb6965c9ccc41e62975c1d85b82f2c2c","_id":"glsl-token-descope@1.0.0","_shasum":"815b3dab80758f463a29c98e08472f0707c03cfb","_from":".","_npmVersion":"2.1.16","_nodeVersion":"0.10.28","_npmUser":{"name":"anonymous","email":"hughskennedy@gmail.com"},"maintainers":[{"name":"anonymous","email":"arch.mojtaba.samimi@gmail.com"},{"name":"anonymous","email":"post.ben.here@gmail.com"},{"name":"anonymous","email":"df.creative@gmail.com"},{"name":"anonymous","email":"arnebackeric@gmail.com"},{"name":"anonymous","email":"renaudeau.gaetan@gmail.com"},{"name":"anonymous","email":"hughskennedy@gmail.com"},{"name":"anonymous","email":"dave.des@gmail.com"},{"name":"anonymous","email":"me@mikkoh.com"},{"name":"anonymous","email":"mikolalysenko@gmail.com"},{"name":"anonymous","email":"syed.reza.ali@gmail.com"},{"name":"anonymous","email":"rsreusser@gmail.com"},{"name":"anonymous","email":"tatum.creative@gmail.com"},{"name":"anonymous","email":"thibaut.seguy@gmail.com"},{"name":"anonymous","email":"marcin.ignac@gmail.com"},{"name":"anonymous","email":"wwwtyro@gmail.com"},{"name":"anonymous","email":"i@yoshuawuyts.com"}],"dist":{"shasum":"815b3dab80758f463a29c98e08472f0707c03cfb","size":3116,"noattachment":false,"tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/glsl-token-descope/-/glsl-token-descope-1.0.0.tgz","integrity":"sha512-DgJMDOW5TYlOOQuuz5PSoY4z1ncgGC800OdCs12Z7T1h9PzJs2lsU6hALV11zpgdUKgA0TgI/orpSG1kqoNRUA=="},"directories":{},"publish_time":1420413752836,"_hasShrinkwrap":false,"_cnpm_publish_time":1420413752836,"_cnpmcore_publish_time":"2021-12-16T22:19:21.322Z","contributors":[]}},"dist-tags":{"latest":"1.0.2"},"name":"glsl-token-descope","time":{"created":"2022-01-27T08:10:37.786Z","modified":"2025-12-07T02:27:00.390Z","1.0.2":"2015-03-06T23:47:11.012Z","1.0.1":"2015-01-04T23:23:32.390Z","1.0.0":"2015-01-04T23:22:32.836Z"},"readme":"# glsl-token-descope\n\n[![experimental](http://badges.github.io/stability-badges/dist/experimental.svg)](http://github.com/badges/stability-badges)\n\n\"Descope\" an array of GLSL tokens such that they can be safely inlined alongside\nwithin another shader without causing any global variable conflicts.\n\nUseful for modularising GLSL source files, e.g. as is done in\n[glslify](http://github.com/stackgl/glslify), but should be useful in other\ntools too.\n\nWritten with WebGL's GLSL syntax in mind – all the same, pull requests to\nsupport other variants would be much appreciated :)\n\n## Usage\n\n[![NPM](https://nodei.co/npm/glsl-token-descope.png)](https://nodei.co/npm/glsl-token-descope/)\n\n### `descope(tokens, [rename(name)])`\n\nTakes an array of GLSL `tokens` produced by\n[glsl-tokenizer](http://github.com/stackgl/glsl-tokenizer) and renames variables\nto avoid global conflicts by modifying their \"data\" property in-place.\n\nFor example:\n\n``` javascript\nvar tokenize  = require('glsl-tokenizer/string')\nvar descope   = require('glsl-token-descope')\nvar stringify = require('glsl-token-string')\n\nvar src = `\nprecision mediump float;\n\nuniform mat4  top1;\nuniform float top2;\n\nvoid main() {\n  float x = 1.0;\n  gl_FragColor = vec4(vec3(x), top2);\n}\n`.trim()\n\nvar tokens = tokenize(src)\n\nconsole.log(stringify(descope(tokens)))\n```\n\nWhich should rename `main`, `top1` and `top2` to result in this output:\n\n``` glsl\nprecision mediump float;\n\nuniform mat4  top1_0;\nuniform float top2_1;\n\nvoid main_2() {\n  float x = 1.0;\n  gl_FragColor = vec4(vec3(x), top2_1);\n}\n```\n\nOptionally, you may pass in a custom `rename` function as `descope`'s second\nargument to choose how you rename your variables. For example, adding a custom\n`rename` function to the previous function:\n\n``` javascript\ndescope(tokens, function(name) {\n  return 'a_' + name\n})\n```\n\nWould result in the following shader:\n\n``` glsl\nprecision mediump float;\n\nuniform mat4  a_top1;\nuniform float a_top2;\n\nvoid a_main() {\n  float x = 1.0;\n  gl_FragColor = vec4(vec3(x), a_top2);\n}\n```\n\n## See Also\n\n* [glslify](http://github.com/stackgl/glslify)\n* [glsl-token-scope](http://github.com/stackgl/glsl-token-scope)\n* [glsl-token-depth](http://github.com/stackgl/glsl-token-depth)\n* [glsl-token-properties](http://github.com/stackgl/glsl-token-properties)\n* [glsl-token-assignments](http://github.com/stackgl/glsl-token-assignments)\n* [glsl-token-string](http://github.com/stackgl/glsl-token-string)\n\n## License\n\nMIT. See [LICENSE.md](http://github.com/stackgl/glsl-token-descope/blob/master/LICENSE.md) for details.","users":{}}