glsl-token-inject-block

1.1.0 • Public • Published

glsl-token-inject-block

unstable

Injects a "block" of GLSL tokens into a shader, after any #version, #extension and precision statements. This will pad the new tokens with the necessary amount of newlines (but no more).

This module ignores token line, column and position.

Example

Your source:

var tokenizer = require('glsl-tokenizer')
var inject = require('glsl-token-inject-block')
var stringify = require('glsl-token-string')
 
var tokens = tokenizer(shaderInput)
var newToken = { 
  type: 'preprocessor', 
  data: '#define FOOBAR' 
}
 
var source = stringify(inject(tokens, newToken))
console.log(source)

The following shader input:

// some comment 
#version 300 es
#extension SOME_EXTENSION : enable
 
void main() {}

Results in the following injected define:

// some comment 
#version 300 es
#extension SOME_EXTENSION : enable
#define FOOBAR
 
void main() {}

Usage

NPM

tokens = inject(tokens, newTokens)

For the given shader source (tokens), injects newTokens into them, assuming the new tokens are a "block" of code that should be placed on its own line.

newTokens can be a single token object, or an array of token objects.

Modifies tokens in place and returns it.

License

MIT, see LICENSE.md for details.

Dependencies (0)

    Dev Dependencies (4)

    Package Sidebar

    Install

    npm i glsl-token-inject-block

    Weekly Downloads

    275,858

    Version

    1.1.0

    License

    MIT

    Last publish

    Collaborators

    • mattdesl