/** afficher des infos depuis un fichier orgmode source **/ import org from 'org'; import fs from 'fs'; let input_orgmode_file_name = './tasks.org'; input_orgmode_file_name = './input.org'; fs.readFile(input_orgmode_file_name, 'utf8', function read(err, data) { if (err) { throw err; } const org_content = data; var parser = new org.Parser(); var orgDocument = parser.parse(org_content); // console.log('orgDocument', orgDocument) orgDocument.nodes.forEach(node => { if (node.type === 'header') { console.log('header') searchForChildren(node) } }) console.log('headerTexts', headerTexts); let all_headers = headerTexts.join('\n') console.log('le fichier input.org a ce nombre de type de tâches'); console.log(' SOMEDAY:', all_headers.toString().match(/SOMEDAY/g)?.length); console.log(' TODO:', all_headers.toString().match(/TODO/g)?.length); console.log(' NEXT:', all_headers.toString().match(/NEXT/g)?.length); console.log(' CANCELLED:', all_headers.toString().match(/CANCELLED/g)?.length); console.log(' DONE:', all_headers.toString().match(/DONE/g)?.length); }); let headerTexts = [] function logTextOfNode(node) { if (node.value && node.type==='text') { console.log(' -- ', node.value) headerTexts.push(node.value) } } function searchForChildren(node) { logTextOfNode(node) if (node.children) { node.children.forEach(child => { console.log(' -- ', child) searchForChildren(child) }) } } // trouver les propriétés de date de cloture pour grouper les tâches par section de temps // afin de savoir ce qui a été réalisé ces X derniers jours let interval_report_days = 30;