Skip to content

Commit a17aa67

Browse files
mrossinektbabej
authored andcommitted
Support capitalized day and month names
As pointed out in [1] it used to be possible to use capitalized day and month names in Taskwarrior. Since switching to the `Datetime` format in [2], this is no longer possible. This commit tries to fix that by ensuring the `Pig::skipPartial` method always compares lower-case characters (since this is what `reference` always contains). Unittests are added to assert this behavior. [1]: GothenburgBitFactory/taskwarrior#2160 [2]: GothenburgBitFactory/taskwarrior@434e95f
1 parent df7267c commit a17aa67

2 files changed

Lines changed: 43 additions & 1 deletion

File tree

src/Pig.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ bool Pig::skipPartial (const std::string& reference, std::string& result)
109109
auto pos = 0;
110110
while (reference[pos] &&
111111
(*_text)[_cursor + pos] &&
112-
reference[pos] == (*_text)[_cursor + pos])
112+
reference[pos] == tolower((*_text)[_cursor + pos]))
113113
++pos;
114114

115115
if (pos > 0)

test/dates.t.cpp

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,22 @@ int main (int, char**)
7878
t.ok (friday == fri, "friday == fri");
7979
t.ok (saturday == sat, "saturday == sat");
8080

81+
Datetime sundayCapital; testInit (t, "Sunday", sundayCapital);
82+
Datetime mondayCapital; testInit (t, "Monday", mondayCapital);
83+
Datetime tuesdayCapital; testInit (t, "Tuesday", tuesdayCapital);
84+
Datetime wednesdayCapital; testInit (t, "Wednesday", wednesdayCapital);
85+
Datetime thursdayCapital; testInit (t, "Thursday", thursdayCapital);
86+
Datetime fridayCapital; testInit (t, "Friday", fridayCapital);
87+
Datetime saturdayCapital; testInit (t, "Saturday", saturdayCapital);
88+
89+
t.ok (sundayCapital == sun, "Sunday == sun");
90+
t.ok (mondayCapital == mon, "Monday == mon");
91+
t.ok (tuesdayCapital == tue, "Tuesday == tue");
92+
t.ok (wednesdayCapital == wed, "Wednesday == wed");
93+
t.ok (thursdayCapital == thu, "Thursday == thu");
94+
t.ok (fridayCapital == fri, "Friday == fri");
95+
t.ok (saturdayCapital == sat, "Saturday == sat");
96+
8197
Datetime january; testInit (t, "january", january);
8298
Datetime february; testInit (t, "february", february);
8399
Datetime march; testInit (t, "march", march);
@@ -116,6 +132,32 @@ int main (int, char**)
116132
t.ok (november == nov, "november == nov");
117133
t.ok (december == dec, "december == dec");
118134

135+
Datetime januaryCapital; testInit (t, "January", januaryCapital);
136+
Datetime februaryCapital; testInit (t, "February", februaryCapital);
137+
Datetime marchCapital; testInit (t, "March", marchCapital);
138+
Datetime aprilCapital; testInit (t, "April", aprilCapital);
139+
Datetime mayCapital; testInit (t, "May", mayCapital);
140+
Datetime juneCapital; testInit (t, "June", juneCapital);
141+
Datetime julyCapital; testInit (t, "July", julyCapital);
142+
Datetime augustCapital; testInit (t, "August", augustCapital);
143+
Datetime septemberCapital; testInit (t, "September", septemberCapital);
144+
Datetime octoberCapital; testInit (t, "October", octoberCapital);
145+
Datetime novemberCapital; testInit (t, "November", novemberCapital);
146+
Datetime decemberCapital; testInit (t, "December", decemberCapital);
147+
148+
t.ok (januaryCapital == jan, "January == jan");
149+
t.ok (februaryCapital == feb, "February == feb");
150+
t.ok (marchCapital == mar, "March == mar");
151+
t.ok (aprilCapital == apr, "April == apr");
152+
// May has only three letters.
153+
t.ok (juneCapital == jun, "June == jun");
154+
t.ok (julyCapital == jul, "July == jul");
155+
t.ok (augustCapital == aug, "August == aug");
156+
t.ok (septemberCapital == sep, "September == sep");
157+
t.ok (octoberCapital == oct, "October == oct");
158+
t.ok (novemberCapital == nov, "November == nov");
159+
t.ok (decemberCapital == dec, "December == dec");
160+
119161
// Simply instantiate these for now. Test later.
120162
Datetime now; testInit (t, "now", now);
121163
Datetime yesterday; testInit (t, "yesterday", yesterday);

0 commit comments

Comments
 (0)