mirror of
https://github.com/Foundry376/Mailspring.git
synced 2025-02-23 15:46:28 +08:00
Add snooze date shorthand expander (#1621)
* Add snooze date shorthand expander * Add "tomorrow", "next week" expanders * Support "2mo" for "2 months" * Add additional tomorrow expander
This commit is contained in:
parent
b3b1f84874
commit
f4929c7c9b
1 changed files with 44 additions and 1 deletions
|
@ -130,6 +130,48 @@ function getChronoPast() {
|
||||||
return _chronoPast;
|
return _chronoPast;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function expandDateLikeString(dateLikeString: string) {
|
||||||
|
// Short format: 2h
|
||||||
|
if (/^\d+h$/.test(dateLikeString)) {
|
||||||
|
const numHours = dateLikeString.match(/^\d+/)[0]; // Extract number
|
||||||
|
return `${numHours} hours`;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Short format: 2d
|
||||||
|
if (/^\d+d$/.test(dateLikeString)) {
|
||||||
|
const numDays = dateLikeString.match(/^\d+/)[0]; // Extract number
|
||||||
|
return `${numDays} days`;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Short format: 2w
|
||||||
|
if (/^\d+w$/.test(dateLikeString)) {
|
||||||
|
const numWeeks = dateLikeString.match(/^\d+/)[0]; // Extract number
|
||||||
|
return `${numWeeks} weeks`;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Short format: 2m, 2mo
|
||||||
|
if (/^\d+mo?$/.test(dateLikeString)) {
|
||||||
|
const numMonths = dateLikeString.match(/^\d+/)[0]; // Extract number
|
||||||
|
return `${numMonths} months`;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Short format: t, to, tom => tomorrow
|
||||||
|
if (['t', 'to', 'tom', 'tom '].indexOf(dateLikeString) >= 0) {
|
||||||
|
return `tomorrow morning`;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Short format: nw, next week => next week
|
||||||
|
if (['nw', 'next week'].indexOf(dateLikeString) >= 0) {
|
||||||
|
return `next Monday`;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dateLikeString.indexOf('tom ') === 0) {
|
||||||
|
return dateLikeString.replace('tom ', 'tomorrow ');
|
||||||
|
}
|
||||||
|
|
||||||
|
return dateLikeString; // Return original string if no match
|
||||||
|
}
|
||||||
|
|
||||||
const DateUtils = {
|
const DateUtils = {
|
||||||
// Localized format: ddd, MMM D, YYYY h:mmA
|
// Localized format: ddd, MMM D, YYYY h:mmA
|
||||||
DATE_FORMAT_LONG: 'llll',
|
DATE_FORMAT_LONG: 'llll',
|
||||||
|
@ -288,7 +330,8 @@ const DateUtils = {
|
||||||
* @return {moment} - moment object representing date
|
* @return {moment} - moment object representing date
|
||||||
*/
|
*/
|
||||||
futureDateFromString(dateLikeString) {
|
futureDateFromString(dateLikeString) {
|
||||||
const date = getChronoFuture().parseDate(dateLikeString);
|
const expanded = expandDateLikeString(dateLikeString);
|
||||||
|
const date = getChronoFuture().parseDate(expanded);
|
||||||
if (!date) {
|
if (!date) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue