Extract text inside a text:a tag (#21)

* Extract text inside a text:a tag

* Extract text inside a text:a tag and create a test

* Fix test regression

* Use example domain name for mails

* nettoyage console.log

---------

Co-authored-by: David Bruant <davidbruant@protonmail.com>
This commit is contained in:
Clémence 2025-09-18 10:36:59 +02:00 committed by GitHub
parent 0938a97a83
commit 8cc74a6fe6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 23 additions and 2 deletions

View File

@ -799,7 +799,7 @@ export default function fillOdtElementTemplate(rootElements, compartment, addIma
} else {
const imageMarker = findImageMarker(currentNode.data, compartment)
if (imageMarker){
console.log({imageMarker}, "dans le if imageMarker")
//console.log({imageMarker}, "dans le if imageMarker")
if (imageMarker.odfjsImage) {
const href = addImageToOdtFile(imageMarker.odfjsImage)

View File

@ -18,7 +18,6 @@ const TEXT_NODE = 3
function extraxtODSCellText(cell) {
let text = '';
const childNodes = cell.childNodes;
for (const child of Array.from(childNodes)) {
if (child.nodeType === TEXT_NODE) {
// Direct text node, append the text directly
@ -34,6 +33,8 @@ function extraxtODSCellText(cell) {
text += pChild.nodeValue; // Append text inside <text:p>
} else if (pChild.nodeName === 'text:line-break') {
text += '\n'; // Append newline for <text:line-break />
} else if (pChild.nodeName === 'text:a') {
text += pChild.textContent
}
}
} else if (child.nodeName === 'text:line-break') {

BIN
tests/fixtures/cellules avec emails.ods vendored Normal file

Binary file not shown.

View File

@ -55,4 +55,24 @@ Pourquoi t'aimeraient-ils seulement comme tu es ? (hein)
Si t'es pas comme eux quand t'es naturel`
t.deepEqual(feuille1[0][0].value, expectedValue)
});
test('.ods cells with mails should be recognized', async t => {
const odsFileWithEmails = (await readFile('./tests/fixtures/cellules avec emails.ods')).buffer
const table = await getODSTableRawContent(odsFileWithEmails);
const feuille1 = table.get('Feuille1')
const row1 = feuille1[0]
t.deepEqual(row1[0].value, 'Nom')
t.deepEqual(row1[1].value, 'Email')
const row2 = feuille1[1]
t.deepEqual(row2[0].value, 'Dav')
t.deepEqual(row2[1].value, 'david@example.org')
const row3 = feuille1[2]
t.deepEqual(row3[0].value, 'Fanny')
t.deepEqual(row3[1].value, 'lemaildeFanny@example.com')
});