GLSL manipulator
GLSL parser and code generator based on Google's glsl-unit grammar.
Install
npm install glsl-man
Usage
Parsing
var glsl = ;var ast = glsl;
Deparsing
var glsl = ;var ast = glsl;var generated = glsl;
Querying
var glsl = ;var ast = glsl;var uniforms = glslqueryall ast glslquery;
API
Parsing
glsl.parse(string)
- Generates AST from GLSL- string - GLSL source code
Deparsing
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
Querying
-
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
Modifying
-
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
.