UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

74 lines 5.98 kB
import { isString } from "./../types/guards.js"; export function isTgdCodeBloc(data) { if (!data || typeof data === "string") return true; if (Array.isArray(data)) { for (const item of data) { if (!isTgdCodeBloc(item)) return false; } return true; } if (typeof data !== "object") return false; for (const key of Object.keys(data)) { const item = data[key]; if (!isTgdCodeBloc(item)) return false; } return true; } 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 ?? 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zaGFkZXIvY29kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFhNUMsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFhO0lBQ3ZDLElBQUksQ0FBQyxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssUUFBUTtRQUFFLE9BQU8sSUFBSSxDQUFBO0lBRWxELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3RCLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7Z0JBQUUsT0FBTyxLQUFLLENBQUE7UUFDMUMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFBO0lBQ2YsQ0FBQztJQUVELElBQUksT0FBTyxJQUFJLEtBQUssUUFBUTtRQUFFLE9BQU8sS0FBSyxDQUFBO0lBRTFDLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2xDLE1BQU0sSUFBSSxHQUFJLElBQWdDLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDbkQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7WUFBRSxPQUFPLEtBQUssQ0FBQTtJQUMxQyxDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUE7QUFDZixDQUFDO0FBRUQsTUFBTSxVQUFVLFVBQVUsQ0FBQyxDQUFVO0lBQ2pDLElBQUksT0FBTyxDQUFDLEtBQUssUUFBUTtRQUFFLE9BQU8sSUFBSSxDQUFBO0lBRXRDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUFFLE9BQU8sS0FBSyxDQUFBO0lBRW5DLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFD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