Fix: Add missing Handlebars subtract helper

- Added subtract helper: parseInt(a) - parseInt(b)
- Helper is used in partial-active-effects.hbs and partial-item-effects.hbs
- Registered in MournbladeCYD2Utility.init() alongside other helpers
- Added test verification for subtract helper registration

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
This commit is contained in:
2026-06-07 00:48:55 +02:00
parent 0258c2e8b7
commit 14763cc5b3
2 changed files with 46 additions and 1 deletions
+3
View File
@@ -46,6 +46,9 @@ export class MournbladeCYD2Utility {
Handlebars.registerHelper('mul', function (a, b) { Handlebars.registerHelper('mul', function (a, b) {
return parseInt(a) * parseInt(b); return parseInt(a) * parseInt(b);
}) })
Handlebars.registerHelper('subtract', function (a, b) {
return parseInt(a) - parseInt(b);
})
Handlebars.registerHelper('select', function(value, options) { Handlebars.registerHelper('select', function(value, options) {
const html = options.fn(this); const html = options.fn(this);
const escaped = String(value).replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); const escaped = String(value).replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
+43 -1
View File
@@ -191,6 +191,47 @@ if (!durationTypeFound) {
console.log(' ✅ Aucune utilisation de duration.type (utilise duration.units)'); console.log(' ✅ Aucune utilisation de duration.type (utilise duration.units)');
} }
// 8. Vérification de l'utilisation du helper subtract
console.log('\n8. Vérification de l\'utilisation du helper subtract :');
const subtractPattern = /subtract/g;
const subtractFiles = [
'templates/partial-active-effects.hbs',
'templates/partial-item-effects.hbs'
];
let subtractUsed = false;
let subtractRegistered = false;
// Vérifier que le helper est utilisé dans les templates
subtractFiles.forEach(file => {
try {
const content = fs.readFileSync(path.join(__dirname, file), 'utf8');
if (subtractPattern.test(content)) {
subtractUsed = true;
}
} catch (err) {
// Fichier introuvable, ignorer
}
});
// Vérifier que le helper est enregistré
try {
const utilityContent = fs.readFileSync(path.join(__dirname, 'modules/mournblade-cyd2-utility.js'), 'utf8');
if (/Handlebars\.registerHelper\('subtract'/g.test(utilityContent)) {
subtractRegistered = true;
}
} catch (err) {
// Fichier introuvable, ignorer
}
if (subtractUsed && subtractRegistered) {
console.log(' ✅ Helper subtract est enregistré et utilisé');
} else if (subtractUsed && !subtractRegistered) {
console.log(' ❌ Helper subtract est utilisé mais pas enregistré');
} else if (!subtractUsed) {
console.log(' ✅ Helper subtract n\'est pas utilisé (ou plus utilisé)');
}
// Résumé // Résumé
console.log('\n=== Résumé ==='); console.log('\n=== Résumé ===');
console.log(`Templates préchargés: ${loaded.length}`); console.log(`Templates préchargés: ${loaded.length}`);
@@ -200,8 +241,9 @@ console.log(`Fichier JSON valide: ${errors.length === 0 ? 'Oui' : 'Non'}`);
console.log(`API dépréciée utilisée: ${deprecatedFound ? 'Oui' : 'Non'}`); console.log(`API dépréciée utilisée: ${deprecatedFound ? 'Oui' : 'Non'}`);
console.log(`Référence à effect.webp: ${effectWebpFound ? 'Oui' : 'Non'}`); console.log(`Référence à effect.webp: ${effectWebpFound ? 'Oui' : 'Non'}`);
console.log(`Utilisation de duration.type: ${durationTypeFound ? 'Oui' : 'Non'}`); console.log(`Utilisation de duration.type: ${durationTypeFound ? 'Oui' : 'Non'}`);
console.log(`Helper subtract: ${(subtractUsed && subtractRegistered) ? 'OK' : (subtractUsed ? 'Manquant' : 'Non utilisé')}`);
if (errors.length === 0 && missingPartials.length === 0 && !deprecatedFound && !effectWebpFound && !durationTypeFound) { if (errors.length === 0 && missingPartials.length === 0 && !deprecatedFound && !effectWebpFound && !durationTypeFound && (subtractUsed ? subtractRegistered : true)) {
console.log('\n✅ Toutes les vérifications ont réussi !'); console.log('\n✅ Toutes les vérifications ont réussi !');
process.exit(0); process.exit(0);
} else { } else {