37 lines
1.3 KiB
JavaScript
37 lines
1.3 KiB
JavaScript
/**
|
||
* Tags bentext réservés au pipeline : ligne `sprite:<alias>` 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<string>} 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<string>} 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);
|
||
});
|
||
};
|