/** * Tags bentext réservés au pipeline : ligne `sprite:` dans le bloc tags (fichier fr). * L’alias correspond à une entrée de `ressources/public/ingredient-sprites.bentext` (comme les tuiles « base »). */ export const VARIANT_TILE_SPRITE_TAG_PREFIX = "sprite:"; const normalizeAliasKey = (s) => s.trim().toLowerCase().replace(/\s+/g, " "); /** * @param {ReadonlyArray} tags Tags déjà normalisés (ex. minuscules depuis readBentext) * @returns {string | null} alias tuile, sans le préfixe */ export const extractVariantTileSpriteAlias = (tags) => { if (!Array.isArray(tags)) return null; for (const t of tags) { const s = typeof t === "string" ? t.trim().toLowerCase() : ""; if (!s.startsWith(VARIANT_TILE_SPRITE_TAG_PREFIX)) continue; const rest = normalizeAliasKey(s.slice(VARIANT_TILE_SPRITE_TAG_PREFIX.length)); if (rest) return rest; } return null; }; /** * Retire les lignes `sprite:` pour le catalogue et les usages « tags visibles ». * @param {ReadonlyArray} tags * @returns {string[]} */ export const stripVariantTileSpriteTags = (tags) => { if (!Array.isArray(tags)) return []; return tags.filter((t) => { const s = typeof t === "string" ? t.trim().toLowerCase() : ""; return !s.startsWith(VARIANT_TILE_SPRITE_TAG_PREFIX); }); };