From e4834d8a11947c0d09f1ab600e14be6a8b76500f Mon Sep 17 00:00:00 2001 From: Bel LaPointe <153096461+breel-render@users.noreply.github.com> Date: Sun, 4 Aug 2024 13:35:29 -0600 Subject: [PATCH] gr --- pttodoer/src/main.rs | 43 ++++++++++++++++++++++--------- pttodoer/src/testdata/legacy.yaml | 18 +++++++------ 2 files changed, 41 insertions(+), 20 deletions(-) diff --git a/pttodoer/src/main.rs b/pttodoer/src/main.rs index e10b6a6..0dda5a6 100644 --- a/pttodoer/src/main.rs +++ b/pttodoer/src/main.rs @@ -148,27 +148,46 @@ impl DB { let f = d.path().join(base); let edited = TasksAndMetadata::new(f.display().to_string()).expect("failed to read edited tasks"); - let was_due = set.due(); - let mut not_due = set.not_due(); - for task in &was_due.tasks.0 { - if !edited.tasks.0.contains(task) { - not_due.tasks.0.push(task.clone()); + let was_due = set.due(); + let mut now_due = vec![]; + let mut not_due = set.not_due().tasks.0; + + for task in &edited.tasks.0 { + if task.is_due() { + eprintln!("now_due.push({:?})", task.clone()); + now_due.push(task.clone()); + } else if !not_due.contains(task) { + eprintln!("not_due.push({:?})", task.clone()); + not_due.push(task.clone()); } } - let mut now_due = vec![]; - for task in &edited.tasks.0 { - if task.is_due() { - now_due.push(task.clone()); - } else if !not_due.tasks.0.contains(task) { - not_due.tasks.0.push(task.clone()); + let mut already_due = vec![]; + let mut already_not_due = vec![]; + for task in &was_due.tasks.0 { + let mut without_ts = task.clone(); + without_ts.unset("ts".to_string()); + + let mut with_ts = task.clone(); + with_ts.set("ts".to_string(), TS::now().to_string()); + + if now_due.contains(&without_ts) { + } else if not_due.contains(task) { + } else if task.is_due() { + eprintln!("already_due.push({:?})", with_ts.clone()); + already_due.push(with_ts.clone()); + } else { + eprintln!("already_not_due.push({:?})", task.clone()); + already_not_due.push(task.clone()); } } let mut new_tasks = Tasks::new(); new_tasks.0.extend(now_due); - new_tasks.0.extend(not_due.tasks.0); + new_tasks.0.extend(already_due); + new_tasks.0.extend(not_due); + new_tasks.0.extend(already_not_due); result.push(TasksAndMetadata::new_with( set.file.clone(), diff --git a/pttodoer/src/testdata/legacy.yaml b/pttodoer/src/testdata/legacy.yaml index cd2c153..8bcd735 100644 --- a/pttodoer/src/testdata/legacy.yaml +++ b/pttodoer/src/testdata/legacy.yaml @@ -1,17 +1,19 @@ -todo: - a - todo: b schedule: 2000-01-01 -scheduled: - c - todo: d schedule: 2000-02-01 - todo: e - ts: Sun Dec 3 23:29:27 EST 2023 - schedule: '0 0 1 1 *' + schedule: 0 0 1 1 * +- todo: e3 + schedule: '* * * * *' +- todo: e2 + schedule: 0 0 1 1 * + ts: 2024-08-04T19:32Z - todo: f schedule: 2099-02-02 -done: -- g -- todo: h - ts: Sun Dec 3 23:29:27 EST 2023 +- _done: g +- _done: + todo: h + ts: Sun Dec 3 23:29:27 EST 2023