From 57d35a0f9abf6a90970c40af727c8840b8a97f86 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck <vincent.vandeme@gmail.com> Date: Wed, 4 Dec 2024 01:43:23 +0100 Subject: [PATCH] Fix: sorts contenant des apostrophes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Le caractère utilisé dans le texte n'est pas l'apostrophe simple informatique (utilisé dans les compendiums), et pas transformé par toLowerCaseNoAccent... --- module/apps/rdd-import-stats.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/module/apps/rdd-import-stats.js b/module/apps/rdd-import-stats.js index db3180c1..262ee156 100644 --- a/module/apps/rdd-import-stats.js +++ b/module/apps/rdd-import-stats.js @@ -22,8 +22,8 @@ const compParser = { entite: XREGEXP_COMP_CREATURE } -const XREGEXP_SORT_VOIE = "[OHNT\\/]+" -const XREGEXP_SORT_NAME = "(?<name>[A-Za-zÀ-ÖØ-öø-ÿ\\s\\-']+)" +const XREGEXP_SORT_VOIE = "(?<voies>[OHNT](\\/[OHNT])*)" +const XREGEXP_SORT_NAME = "(?<name>[^\\(]+)" const XREGEXP_SORT_CASE = "\\((?<case>[A-Za-zÀ-ÖØ-öø-ÿ\\s\\-]+)\\)"; const XREGEXP_SORT = "(" + XREGEXP_SORT_VOIE @@ -216,7 +216,7 @@ export class RdDStatBlockParser { if (type == "personnage") { - await RdDStatBlockParser.parseHautReve(statString, items); + await RdDStatBlockParser.parseHautReve(statString, actorData, items); RdDStatBlockParser.parsePersonnage(statString, actorData); } @@ -228,7 +228,7 @@ export class RdDStatBlockParser { console.log(actorData); } - static async parseHautReve(statString, items) { + static async parseHautReve(statString, actorData, items) { let hautRevant = false; // Attemp to detect spell let sorts = await SystemCompendiums.getWorldOrCompendiumItems("sort", "sorts-oniros"); @@ -236,9 +236,10 @@ export class RdDStatBlockParser { sorts = sorts.concat(await SystemCompendiums.getWorldOrCompendiumItems("sort", "sorts-narcos")); sorts = sorts.concat(await SystemCompendiums.getWorldOrCompendiumItems("sort", "sorts-thanatos")); - XRegExp.forEach(statString, XRegExp(XREGEXP_SORT, 'giu'), + XRegExp.forEach(statString, XRegExp(XREGEXP_SORT, 'gu' /* keep case sensitive to match the spell draconic skill */), function (matchSort, i) { - let sort = sorts.find(s => Grammar.equalsInsensitive(s.name, matchSort.name)); + const sortName = Grammar.toLowerCaseNoAccent(matchSort.name).trim().replace("’", "'"); + let sort = sorts.find(s => Grammar.toLowerCaseNoAccent(s.name) == sortName) if (sort) { hautRevant = true; sort = sort.toObject(); @@ -247,6 +248,10 @@ export class RdDStatBlockParser { } items.push(sort); } + else{ + ui.notifications.warn(`Impossible de trouver le sort ${matchSort.name} / ${sortName}`) + console.warn(`Impossible de trouver le sort ${matchSort.name} / ${sortName}`) + } }); if (hautRevant) {