GLSL parser and code generator based on Google's glsl-unit grammar.
npm install glsl-man
var glsl = require('glsl-man');
var ast = glsl.parse(source);
var glsl = require('glsl-man');
var ast = glsl.parse(source);
var generated = glsl.string(ast);
var glsl = require('glsl-man');
var ast = glsl.parse(source);
var uniforms = glsl.query.all(
ast,
glsl.query.selector('declarator[typeAttribute] > type[qualifier=uniform]'));
glsl.parse(string)
- Generates AST from GLSL- string - GLSL source code
glsl.string(ASTNode, options)
- Generates GLSL from AST- ASTNode - Any node from the tree returned by
parse(string)
- options - The default options are described below:
- ASTNode - Any node from the tree returned by
{
tab: '\t', // Character used for tab
space: ' ', // Character used for space
newline: '\n', // Character used for newlines
// The following should not be altered to produce valid GLSL
terminator: ';', // Character used to terminate a statement
comma: ',' // Character used for comma
}
glsl.wrap(ASTNode)
- Wraps the given node in a 'root' scope. Useful for generating valid code from arbitrary AST subnodes.- ASTNode - Any node from the tree returned by
parse(string)
- ASTNode - Any node from the tree returned by
-
glsl.query.selector(string)
- Returns a selector- string - cssauron selector
-
glsl.query.all(node, selector, matches)
- Searches the tree depth first and returns all nodes that match the selector- node - AST node
- selector - The selector to test against
- matches - Array to store matched nodes (optional)
-
glsl.query.first(node, selector)
- Searches the tree depth first and returns the first node that matches the selector- node - AST node
- selector - The selector to test against
-
glsl.query.children(node, selector, matches)
- Searches only the immediate subnodes of the given node and returns all children that match the selector- node - AST node
- selector - The selector to test against
- matches - Array to store matched nodes (optional)
-
glsl.query.firstChild(node, selector)
- Searches only the immediate subnodes of the given node and returns the first node that matches the selector- node - AST node
- selector - The selector to test against
-
glsl.query.subnodes(node)
- Returns a list of all subnodes of the given node that can be further traversed- node - AST node
-
glsl.mod.find(node)
- Returns an object withindex
andstatements
keys.- node - AST node
-
glsl.mod.remove(node)
- Removes the given node from it's AST.- node - AST node
-
glsl.mod.replace(node, newNode)
- Replaces the given node withnewNode
.- node - AST node
- newNode - AST node or Array of AST nodes
-
glsl.mod.add(node, newNode, after)
- InsertsnewNode
before or afternode
.- node - AST node
- newNode - AST node or Array of AST nodes
- after - (optional) Boolean
-
glsl.mod.addBefore(node, newNode)
- Shortcut toglsl.mod.add
. -
glsl.mod.addAfter(node, newNode)
- Shortcut toglsl.mod.add
.