@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
58 lines • 4.84 kB
JavaScript
import { isString } from "./../types/guards.js";
export function isCodeBloc(v) {
if (typeof v === "string")
return true;
if (!Array.isArray(v))
return false;
for (const item of v) {
if (!isCodeBloc(item))
return false;
}
return true;
}
export function tgdCodeStringify(code, indent = "", setOfFunctionNames) {
if (typeof code === "string")
return `${indent}${code}`;
if (!code)
return "";
const set = setOfFunctionNames !== null && setOfFunctionNames !== void 0 ? setOfFunctionNames : new Set();
if (!Array.isArray(code)) {
return Object.keys(code)
.map(key => {
if (set.has(key))
return null;
set.add(key);
return `// ${key}\n${code[key]}\n`;
})
.filter(item => isString(item))
.join("\n");
}
const subIndent = `${indent} `;
return code
.filter(item => item !== null)
.filter(item => !Array.isArray(item) || item.length > 0)
.map(line => tgdCodeStringify(line, subIndent, set))
.join("\n");
}
export function expandVariables(definition, prefix, comment = "----------------------------------------") {
const names = Object.keys(definition);
if (names.length === 0)
return [];
return [
`// ${comment}`,
...names.map(name => `${prefix} ${definition[name]} ${name};`),
];
}
export function expandFunctions(definition, comment) {
if (isCodeBloc(definition))
return [definition];
const names = Object.keys(definition);
if (names.length === 0)
return [];
const result = comment ? [`// ${comment}`] : [];
for (const name of names) {
result.push(definition[name], "");
}
return result;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaGFkZXIvY29kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFlNUMsTUFBTSxVQUFVLFVBQVUsQ0FBQyxDQUFVO0lBQ2pDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUTtRQUFFLE9BQU8sSUFBSSxDQUFBO0lBRXRDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFBO0lBRW5DLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQTtJQUN2QyxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUE7QUFDZixDQUFDO0FBRUQsTUFBTSxVQUFVLGdCQUFnQixDQUM1QixJQUFpQixFQUNqQixNQUFNLEdBQUcsRUFBRSxFQUNYLGtCQUFnQztJQUVoQyxJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVE7UUFBRSxPQUFPLEdBQUcsTUFBTSxHQUFHLElBQUksRUFBRSxDQUFBO0lBRXZELElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxFQUFFLENBQUE7SUFFcEIsTUFBTSxHQUFHLEdBQUcsa0JBQWtCLGFBQWxCLGtCQUFrQixjQUFsQixrQkFBa0IsR0FBSSxJQUFJLEdBQUcsRUFBVSxDQUFBO0lBQ25ELElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDdkIsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzthQUNuQixHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDUCxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDO2dCQUFFLE9BQU8sSUFBSSxDQUFBO1lBRTdCLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUE7WUFDWixPQUFPLE1BQU0sR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFBO1FBQ3RDLENBQUMsQ0FBQzthQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDbkIsQ0FBQztJQUVELE1BQU0sU0FBUyxHQUFHLEdBQUcsTUFBTSxNQUFNLENBQUE7SUFDakMsT0FBTyxJQUFJO1NBQ04sTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQztTQUM3QixNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7U0FDdkQsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztTQUNuRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDbkIsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBRzNCLFVBQWtDLEVBQ2xDLE1BQWMsRUFDZCxPQUFPLEdBQUcsMENBQTBDO0lBRXBELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDckMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLEVBQUUsQ0FBQTtJQUVqQyxPQUFPO1FBQ0gsTUFBTSxPQUFPLEVBQUU7UUFDZixHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxHQUFHLENBQUM7S0FDakUsQ0FBQTtBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUMzQixVQUEwQyxFQUMxQyxPQUFnQjtJQUVoQixJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUM7UUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUE7SUFFL0MsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNyQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFBO0lBRWpDLE1BQU0sTUFBTSxHQUFrQixPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDOUQsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN2QixNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUNyQyxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUE7QUFDakIsQ0FBQyJ9