Uniformizing the translation skills ids

This commit is contained in:
Vlyan
2022-03-23 18:33:08 +01:00
parent a1c6f0f373
commit f17cc1c7b0
2 changed files with 34 additions and 32 deletions

View File

@@ -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();
}
/**

View File

@@ -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