From 7aace5741e6482530f207dc48794acc8e06fa99f Mon Sep 17 00:00:00 2001 From: confusedalex Date: Thu, 29 May 2025 12:57:25 +0200 Subject: [PATCH 1/3] test(timestamp): add test for DateTime getter --- test/org/model/timestamp_test.dart | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test/org/model/timestamp_test.dart b/test/org/model/timestamp_test.dart index 6b63e18..d4e664d 100644 --- a/test/org/model/timestamp_test.dart +++ b/test/org/model/timestamp_test.dart @@ -13,6 +13,7 @@ void main() { expect(result.contains('Wed'), isTrue); expect(result.contains('あ'), isFalse); expect(result.isActive, isTrue); + expect(result.dateTime, DateTime(2020, 03, 12)); expect(result.toMarkup(), markup); }); test('date and time', () { @@ -22,6 +23,7 @@ void main() { expect(result.contains('Wed'), isTrue); expect(result.contains('あ'), isFalse); expect(result.isActive, isTrue); + expect(result.dateTime, DateTime(2020, 03, 12, 08, 34)); expect(result.toMarkup(), markup); }); test('with repeater', () { @@ -32,6 +34,7 @@ void main() { expect(result.contains('+1w'), isTrue); expect(result.contains('あ'), isFalse); expect(result.isActive, isTrue); + expect(result.dateTime, DateTime(2020, 03, 12, 08, 34)); expect(result.toMarkup(), markup); }); test('with repeater (min/max)', () { @@ -42,6 +45,7 @@ void main() { expect(result.contains('+1w/2w'), isTrue); expect(result.contains('あ'), isFalse); expect(result.isActive, isTrue); + expect(result.dateTime, DateTime(2020, 03, 12, 08, 34)); expect(result.toMarkup(), markup); }); test('with multiple repeaters', () { @@ -53,6 +57,7 @@ void main() { expect(result.contains('--2d'), isTrue); expect(result.contains('あ'), isFalse); expect(result.isActive, isTrue); + expect(result.dateTime, DateTime(2020, 03, 12, 08, 34)); expect(result.toMarkup(), markup); }); test('inactive', () { @@ -64,6 +69,7 @@ void main() { expect(result.contains('--12d'), isTrue); expect(result.contains('あ'), isFalse); expect(result.isActive, isFalse); + expect(result.dateTime, DateTime(2020, 03, 12, 18, 34)); expect(result.toMarkup(), markup); }); test('time range', () { @@ -75,6 +81,8 @@ void main() { expect(result.contains('--12d'), isTrue); expect(result.contains('あ'), isFalse); expect(result.isActive, isFalse); + expect(result.startDateTime, DateTime(2020, 03, 12, 18, 34)); + expect(result.endDateTime, DateTime(2020, 03, 12, 19, 35)); expect(result.toMarkup(), markup); }); test('date range', () { @@ -89,6 +97,8 @@ void main() { expect(result.contains('--12d'), isTrue); expect(result.contains('あ'), isFalse); expect(result.isActive, isFalse); + expect(result.start.dateTime, DateTime(2020, 03, 11, 18, 34)); + expect(result.end.dateTime, DateTime(2020, 03, 12, 18, 34)); expect(result.toMarkup(), markup); }); test('sexp', () { From 985f1f3ef6db5188b061647f37223dddbe2a4a8d Mon Sep 17 00:00:00 2001 From: confusedalex Date: Thu, 29 May 2025 12:57:46 +0200 Subject: [PATCH 2/3] feat(timestamp): add DateTime getter for timestamps --- lib/src/org/model/org_timestamp.dart | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/lib/src/org/model/org_timestamp.dart b/lib/src/org/model/org_timestamp.dart index 2c93709..d602b4d 100644 --- a/lib/src/org/model/org_timestamp.dart +++ b/lib/src/org/model/org_timestamp.dart @@ -35,6 +35,14 @@ class OrgSimpleTimestamp extends OrgLeafNode { @override String toString() => 'OrgSimpleTimestamp'; + DateTime get dateTime => DateTime( + int.parse(date.year), + int.parse(date.month), + int.parse(date.day), + time != null ? int.parse(time!.hour) : 0, + time != null ? int.parse(time!.minute) : 0, + ); + @override void _toMarkupImpl(OrgSerializer buf) { buf @@ -157,6 +165,22 @@ class OrgTimeRangeTimestamp extends OrgLeafNode { bool get isActive => prefix == '<' && suffix == '>'; + DateTime get startDateTime => DateTime( + int.parse(date.year), + int.parse(date.month), + int.parse(date.day), + int.parse(timeStart.hour), + int.parse(timeStart.minute), + ); + + DateTime get endDateTime => DateTime( + int.parse(date.year), + int.parse(date.month), + int.parse(date.day), + int.parse(timeEnd.hour), + int.parse(timeEnd.minute), + ); + @override String toString() => 'OrgTimeRangeTimestamp'; From 08bc6fbfc25428650efc9694e2e3071bc6747a95 Mon Sep 17 00:00:00 2001 From: Aaron Madlon-Kay Date: Thu, 29 May 2025 22:00:02 +0900 Subject: [PATCH 3/3] Invert ternary operator for readability --- lib/src/org/model/org_timestamp.dart | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/src/org/model/org_timestamp.dart b/lib/src/org/model/org_timestamp.dart index d602b4d..6ae77cf 100644 --- a/lib/src/org/model/org_timestamp.dart +++ b/lib/src/org/model/org_timestamp.dart @@ -39,8 +39,8 @@ class OrgSimpleTimestamp extends OrgLeafNode { int.parse(date.year), int.parse(date.month), int.parse(date.day), - time != null ? int.parse(time!.hour) : 0, - time != null ? int.parse(time!.minute) : 0, + time == null ? 0 : int.parse(time!.hour), + time == null ? 0 : int.parse(time!.minute), ); @override