UNPKG

@threeify/shader-transpiler

Version:

A glsl to JS module transpiler.

76 lines 2.4 kB
function parseString(token, defaultValue) { if (token === undefined) { return defaultValue; } if (typeof token === 'string') { return token; } throw new Error(`unhandled string value: "${token}"`); } function parseStringArray(token, defaultValue) { if (token === undefined) { return defaultValue; } if (typeof token === 'object') { const result = []; token.forEach((value, index) => { result.push(parseString(value, '')); }); return result.filter((value) => value !== ''); } throw new Error(`unhandled string array value: "${token}"`); } function parseBoolean(token, defaultValue) { if (token === undefined) { return defaultValue; } if (typeof token === 'boolean') { return token; } if (typeof token === 'string') { if (token.toLowerCase() === 'true' || token === '1' || token.toLowerCase() === 't') { return true; } if (token.toLowerCase() === 'false' || token === '0' || token.toLowerCase() === 'f') { return false; } } throw new Error(`unhandled boolean value: "${token}"`); } function parseInteger(token, defaultValue) { if (token === undefined) { return defaultValue; } if (typeof token === 'number') { return token; } if (typeof token === 'string') { return Number.parseInt(token); } throw new Error(`unhandled integer value: "${token}"`); } export class Options { constructor() { this.rootDir = '.'; this.includeDirs = []; this.outDir = './dist'; this.extensions = ['glsl']; this.minify = false; this.verboseLevel = 0; this.allowJSIncludes = false; } safeCopy(json) { this.rootDir = parseString(json.rootDir, this.rootDir); this.includeDirs = parseStringArray(json.includeDirs, this.includeDirs); this.outDir = parseString(json.outDir, this.outDir); this.extensions.concat(parseStringArray(json.extensions, [])); this.minify = parseBoolean(json.minify, this.minify); this.verboseLevel = parseInteger(json.verboseLevel, this.verboseLevel); this.allowJSIncludes = parseBoolean(json.allowJSIncludes, this.allowJSIncludes); } } //# sourceMappingURL=Options.js.map