Phase 4: Implement relative date expressions

- Add parseRelativeExpression() to detect pattern: attr+/-duration
- Add resolveDateValue() to resolve absolute or relative dates
- Add applyDateAttribute() helper for date attributes with relative support
- Track attribute order in Modifier struct (AttributeOrder field)
- Refactor Apply() and ApplyToNew() to process attrs in order
- Support chaining: due:mon scheduled:due-3d wait:scheduled-1d
- Support addition and subtraction: due+1y, wait-2d
- Add comprehensive test suite for relative expressions
- Error if referencing undefined date attribute
- All 38+ tests passing
This commit is contained in:
2026-01-05 10:05:20 +01:00
parent cd476cfc99
commit 2afa4c6ee0
3 changed files with 298 additions and 90 deletions
@@ -271,3 +271,4 @@ func TestModifierWithRecurrence(t *testing.T) {
t.Errorf("Expected recurrence %v, got %v", expected, *task.RecurrenceDuration)
}
}