38 lines
1.3 KiB
TypeScript
38 lines
1.3 KiB
TypeScript
import { Window } from 'happy-dom';
|
|
import * as fs from 'fs';
|
|
|
|
const window = new Window();
|
|
|
|
function testFile(filePath: string) {
|
|
console.log(`\n--- Testing file: ${filePath} ---`);
|
|
let content = fs.readFileSync(filePath, 'utf8');
|
|
|
|
// Basic Handlebars comments and blocks stripping to leave clean HTML
|
|
content = content.replace(/\{\{!--[\s\S]*?--\}\}/g, '');
|
|
content = content.replace(/\{\{[\s\S]*?\}\}/g, '');
|
|
|
|
const parser = new window.DOMParser();
|
|
const doc = parser.parseFromString(content, 'text/html');
|
|
const body = doc.body;
|
|
|
|
const children = Array.from(body.childNodes).filter(node => {
|
|
// Mimic the likely behavior of Foundry: filter out empty text nodes
|
|
if (node.nodeType === 3 && !node.textContent.trim()) return false;
|
|
return true;
|
|
});
|
|
|
|
console.log(`Parsed children count: ${children.length}`);
|
|
children.forEach((node, i) => {
|
|
console.log(`Child ${i}: type=${node.nodeType} (${node.nodeName}), textLength=${node.textContent.trim().length}`);
|
|
if (children.length > 1) {
|
|
console.log(`OuterHTML snippet:`, (node as any).outerHTML || node.textContent.slice(0, 100));
|
|
}
|
|
});
|
|
}
|
|
|
|
const characterPath = './templates/actor/character.hbs';
|
|
const npcPath = './templates/actor/npc.hbs';
|
|
|
|
testFile(characterPath);
|
|
testFile(npcPath);
|