sugar
Version:
A Javascript utility library for working with native objects.
40 lines (35 loc) • 1.49 kB
JavaScript
;
var LocaleHelpers = require('../var/LocaleHelpers'),
trim = require('../../common/internal/trim'),
getMonth = require('./getMonth'),
isDefined = require('../../common/internal/isDefined'),
getNewDate = require('./getNewDate'),
compareDay = require('./compareDay'),
getWeekday = require('./getWeekday'),
dateIsValid = require('./dateIsValid'),
classChecks = require('../../common/var/classChecks'),
compareDate = require('./compareDate');
var isString = classChecks.isString,
English = LocaleHelpers.English;
function fullCompareDate(date, d, margin) {
var tmp;
if (!dateIsValid(date)) return;
if (isString(d)) {
d = trim(d).toLowerCase();
switch(true) {
case d === 'future': return date.getTime() > getNewDate().getTime();
case d === 'past': return date.getTime() < getNewDate().getTime();
case d === 'today': return compareDay(date);
case d === 'tomorrow': return compareDay(date, 1);
case d === 'yesterday': return compareDay(date, -1);
case d === 'weekday': return getWeekday(date) > 0 && getWeekday(date) < 6;
case d === 'weekend': return getWeekday(date) === 0 || getWeekday(date) === 6;
case (isDefined(tmp = English.weekdayMap[d])):
return getWeekday(date) === tmp;
case (isDefined(tmp = English.monthMap[d])):
return getMonth(date) === tmp;
}
}
return compareDate(date, d, margin);
}
module.exports = fullCompareDate;