From f17cc1c7b0a0a456b04c8ec2e08714bb50c85b46 Mon Sep 17 00:00:00 2001 From: Vlyan Date: Wed, 23 Mar 2022 18:33:08 +0100 Subject: [PATCH] Uniformizing the translation skills ids --- system/scripts/helpers.js | 31 ++-------------------- system/scripts/items/technique-sheet.js | 35 ++++++++++++++++++++++--- 2 files changed, 34 insertions(+), 32 deletions(-) diff --git a/system/scripts/helpers.js b/system/scripts/helpers.js index 3cbde81..e5f4990 100644 --- a/system/scripts/helpers.js +++ b/system/scripts/helpers.js @@ -58,34 +58,6 @@ export class HelpersL5r5e { }, new Map()); } - /** - * Get a flat map for skill translation - * @param {boolean} bToSkillId if true flip props/values - * @return {Object} - */ - static getSkillsTranslationMap(bToSkillId) { - let map = Array.from(CONFIG.l5r5e.skills).reduce((acc, [id, cat]) => { - acc[id] = game.i18n.localize(`l5r5e.skills.${cat}.${id}`); - acc[cat] = game.i18n.localize(`l5r5e.skills.${cat}.title`); - return acc; - }, {}); - if (bToSkillId) { - map = Object.entries(map).reduce((obj, [key, value]) => ({ ...obj, [value]: key }), {}); - } - return map; - } - - /** - * Translate a list of skill and category - * @param {string[]} aIn - * @param {boolean} bToSkillId - * @return {string[]} - */ - static translateSkillsList(aIn, bToSkillId) { - const map = HelpersL5r5e.getSkillsTranslationMap(bToSkillId); - return aIn.map((skill) => map[skill.trim()]); - } - /** * Get Techniques for List / Select * @param types core|school|title|custom @@ -773,7 +745,8 @@ export class HelpersL5r5e { .normalize("NFKD") .replace(/[\u0300-\u036f]/g, "") // remove accents .replace(/[\W]/g, " ") // remove non word things - .toLowerCase(); + .toLowerCase() + .trim(); } /** diff --git a/system/scripts/items/technique-sheet.js b/system/scripts/items/technique-sheet.js index fc29bcc..97d83a7 100644 --- a/system/scripts/items/technique-sheet.js +++ b/system/scripts/items/technique-sheet.js @@ -28,7 +28,7 @@ export class TechniqueSheetL5r5e extends ItemSheetL5r5e { // Sanitize Difficulty and Skill list sheetData.data.data.difficulty = TechniqueSheetL5r5e.formatDifficulty(sheetData.data.data.difficulty); - sheetData.data.data.skill = game.l5r5e.HelpersL5r5e.translateSkillsList( + sheetData.data.data.skill = TechniqueSheetL5r5e.translateSkillsList( TechniqueSheetL5r5e.formatSkillList(sheetData.data.data.skill.split(",")), false ).join(", "); @@ -55,7 +55,7 @@ export class TechniqueSheetL5r5e extends ItemSheetL5r5e { // Sanitize Difficulty and Skill list formData["data.difficulty"] = TechniqueSheetL5r5e.formatDifficulty(formData["data.difficulty"]); formData["data.skill"] = TechniqueSheetL5r5e.formatSkillList( - game.l5r5e.HelpersL5r5e.translateSkillsList(formData["data.skill"].split(","), true) + TechniqueSheetL5r5e.translateSkillsList(formData["data.skill"].split(","), true) ).join(","); return super._updateObject(event, formData); @@ -94,7 +94,7 @@ export class TechniqueSheetL5r5e extends ItemSheetL5r5e { game.l5r5e.HelpersL5r5e.autocomplete( html, "data.skill", - Object.values(game.l5r5e.HelpersL5r5e.getSkillsTranslationMap(false)), + Object.values(TechniqueSheetL5r5e.getSkillsTranslationMap(false)), "," ); } @@ -111,6 +111,35 @@ export class TechniqueSheetL5r5e extends ItemSheetL5r5e { return str; } + /** + * Get a flat map for skill translation + * @param {boolean} bToSkillId if true flip props/values + * @return {Object} + */ + static getSkillsTranslationMap(bToSkillId) { + return Array.from(CONFIG.l5r5e.skills).reduce((acc, [id, cat]) => { + if (bToSkillId) { + acc[game.l5r5e.HelpersL5r5e.normalize(game.i18n.localize(`l5r5e.skills.${cat}.${id}`))] = id; + acc[game.l5r5e.HelpersL5r5e.normalize(game.i18n.localize(`l5r5e.skills.${cat}.title`))] = cat; + } else { + acc[id] = game.i18n.localize(`l5r5e.skills.${cat}.${id}`); + acc[cat] = game.i18n.localize(`l5r5e.skills.${cat}.title`); + } + return acc; + }, {}); + } + + /** + * Translate a list of skill and category + * @param {string[]} aIn + * @param {boolean} bToSkillId + * @return {string[]} + */ + static translateSkillsList(aIn, bToSkillId) { + const map = TechniqueSheetL5r5e.getSkillsTranslationMap(bToSkillId); + return aIn.map((skill) => map[game.l5r5e.HelpersL5r5e.normalize(skill)]); + } + /** * Sanitize the technique skill list * @param {string[]} skillList