Skip to content

Commit db75445

Browse files
confusedalexamake
andauthored
Add DateTime getter for timestamp (#22)
* test(timestamp): add test for DateTime getter * feat(timestamp): add DateTime getter for timestamps * Invert ternary operator for readability --------- Co-authored-by: Aaron Madlon-Kay <aaron@madlon-kay.com>
1 parent 0c2eca6 commit db75445

2 files changed

Lines changed: 34 additions & 0 deletions

File tree

lib/src/org/model/org_timestamp.dart

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,14 @@ class OrgSimpleTimestamp extends OrgLeafNode {
3535
@override
3636
String toString() => 'OrgSimpleTimestamp';
3737

38+
DateTime get dateTime => DateTime(
39+
int.parse(date.year),
40+
int.parse(date.month),
41+
int.parse(date.day),
42+
time == null ? 0 : int.parse(time!.hour),
43+
time == null ? 0 : int.parse(time!.minute),
44+
);
45+
3846
@override
3947
void _toMarkupImpl(OrgSerializer buf) {
4048
buf
@@ -157,6 +165,22 @@ class OrgTimeRangeTimestamp extends OrgLeafNode {
157165

158166
bool get isActive => prefix == '<' && suffix == '>';
159167

168+
DateTime get startDateTime => DateTime(
169+
int.parse(date.year),
170+
int.parse(date.month),
171+
int.parse(date.day),
172+
int.parse(timeStart.hour),
173+
int.parse(timeStart.minute),
174+
);
175+
176+
DateTime get endDateTime => DateTime(
177+
int.parse(date.year),
178+
int.parse(date.month),
179+
int.parse(date.day),
180+
int.parse(timeEnd.hour),
181+
int.parse(timeEnd.minute),
182+
);
183+
160184
@override
161185
String toString() => 'OrgTimeRangeTimestamp';
162186

test/org/model/timestamp_test.dart

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ void main() {
1313
expect(result.contains('Wed'), isTrue);
1414
expect(result.contains('あ'), isFalse);
1515
expect(result.isActive, isTrue);
16+
expect(result.dateTime, DateTime(2020, 03, 12));
1617
expect(result.toMarkup(), markup);
1718
});
1819
test('date and time', () {
@@ -22,6 +23,7 @@ void main() {
2223
expect(result.contains('Wed'), isTrue);
2324
expect(result.contains('あ'), isFalse);
2425
expect(result.isActive, isTrue);
26+
expect(result.dateTime, DateTime(2020, 03, 12, 08, 34));
2527
expect(result.toMarkup(), markup);
2628
});
2729
test('with repeater', () {
@@ -32,6 +34,7 @@ void main() {
3234
expect(result.contains('+1w'), isTrue);
3335
expect(result.contains('あ'), isFalse);
3436
expect(result.isActive, isTrue);
37+
expect(result.dateTime, DateTime(2020, 03, 12, 08, 34));
3538
expect(result.toMarkup(), markup);
3639
});
3740
test('with repeater (min/max)', () {
@@ -42,6 +45,7 @@ void main() {
4245
expect(result.contains('+1w/2w'), isTrue);
4346
expect(result.contains('あ'), isFalse);
4447
expect(result.isActive, isTrue);
48+
expect(result.dateTime, DateTime(2020, 03, 12, 08, 34));
4549
expect(result.toMarkup(), markup);
4650
});
4751
test('with multiple repeaters', () {
@@ -53,6 +57,7 @@ void main() {
5357
expect(result.contains('--2d'), isTrue);
5458
expect(result.contains('あ'), isFalse);
5559
expect(result.isActive, isTrue);
60+
expect(result.dateTime, DateTime(2020, 03, 12, 08, 34));
5661
expect(result.toMarkup(), markup);
5762
});
5863
test('inactive', () {
@@ -64,6 +69,7 @@ void main() {
6469
expect(result.contains('--12d'), isTrue);
6570
expect(result.contains('あ'), isFalse);
6671
expect(result.isActive, isFalse);
72+
expect(result.dateTime, DateTime(2020, 03, 12, 18, 34));
6773
expect(result.toMarkup(), markup);
6874
});
6975
test('time range', () {
@@ -75,6 +81,8 @@ void main() {
7581
expect(result.contains('--12d'), isTrue);
7682
expect(result.contains('あ'), isFalse);
7783
expect(result.isActive, isFalse);
84+
expect(result.startDateTime, DateTime(2020, 03, 12, 18, 34));
85+
expect(result.endDateTime, DateTime(2020, 03, 12, 19, 35));
7886
expect(result.toMarkup(), markup);
7987
});
8088
test('date range', () {
@@ -89,6 +97,8 @@ void main() {
8997
expect(result.contains('--12d'), isTrue);
9098
expect(result.contains('あ'), isFalse);
9199
expect(result.isActive, isFalse);
100+
expect(result.start.dateTime, DateTime(2020, 03, 11, 18, 34));
101+
expect(result.end.dateTime, DateTime(2020, 03, 12, 18, 34));
92102
expect(result.toMarkup(), markup);
93103
});
94104
test('sexp', () {

0 commit comments

Comments
 (0)