69 lines
1.7 KiB
JavaScript
69 lines
1.7 KiB
JavaScript
/**
|
|
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;
|
|
|
|
|