foop
Version:
interfaces that describe their intentions.
39 lines (37 loc) • 3.63 kB
JavaScript
var isNil = require('../is/nullOrUndefined')
var isDate = require('../is/date')
var isNumber = require('../is/number')
var isString = require('../is/string')
var isArray = require('../is/array')
var newDate = require('../construct/date')
/**
* convert values to dates
* @since 5.0.0-beta.7
*
* @param {Date | number | string | Array<*> | *} date value to cast to a Date
* @return {Date} it's a date!
*
* @example
* toDate()
* //=> new Date()
*
* toDate('october-31-1960')
* //=> Date.parse('october-31-1960')
*
* toDate(1000000)
* //=> new Date(1000000)
*
* // year, month [, date, hours, minutes, seconds, milliseconds]
* toDate([2014, 1, 1])
* //=> new Date(2014, 1, 1)
*/
module.exports = function toDate(date) {
// this is fallback too
// if (isNil(date)) return newDate()
if (isDate(date)) { return date }
if (isNumber(date)) { return newDate(date) }
if (isString(date)) { return Date.parse(date) }
if (isArray(date)) { return newDate.apply(this, date) }
else { return newDate() }
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9EYXRlLmpzIiwic291cmNlcyI6WyJ0b0RhdGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgaXNOaWwgPSByZXF1aXJlKCcuLi9pcy9udWxsT3JVbmRlZmluZWQnKVxuY29uc3QgaXNEYXRlID0gcmVxdWlyZSgnLi4vaXMvZGF0ZScpXG5jb25zdCBpc051bWJlciA9IHJlcXVpcmUoJy4uL2lzL251bWJlcicpXG5jb25zdCBpc1N0cmluZyA9IHJlcXVpcmUoJy4uL2lzL3N0cmluZycpXG5jb25zdCBpc0FycmF5ID0gcmVxdWlyZSgnLi4vaXMvYXJyYXknKVxuY29uc3QgbmV3RGF0ZSA9IHJlcXVpcmUoJy4uL2NvbnN0cnVjdC9kYXRlJylcblxuLyoqXG4gKiBjb252ZXJ0IHZhbHVlcyB0byBkYXRlc1xuICogQHNpbmNlIDUuMC4wLWJldGEuN1xuICpcbiAqIEBwYXJhbSB7RGF0ZSB8IG51bWJlciB8IHN0cmluZyB8IEFycmF5PCo+IHwgKn0gZGF0ZSB2YWx1ZSB0byBjYXN0IHRvIGEgRGF0ZVxuICogQHJldHVybiB7RGF0ZX0gaXQncyBhIGRhdGUhXG4gKlxuICogQGV4YW1wbGVcbiAqICAgIHRvRGF0ZSgpXG4gKiAgICAvLz0+IG5ldyBEYXRlKClcbiAqXG4gKiAgICB0b0RhdGUoJ29jdG9iZXItMzEtMTk2MCcpXG4gKiAgICAvLz0+IERhdGUucGFyc2UoJ29jdG9iZXItMzEtMTk2MCcpXG4gKlxuICogICAgdG9EYXRlKDEwMDAwMDApXG4gKiAgICAvLz0+IG5ldyBEYXRlKDEwMDAwMDApXG4gKlxuICogICAgLy8geWVhciwgbW9udGggWywgZGF0ZSwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1pbGxpc2Vjb25kc11cbiAqICAgIHRvRGF0ZShbMjAxNCwgMSwgMV0pXG4gKiAgICAvLz0+IG5ldyBEYXRlKDIwMTQsIDEsIDEpXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gdG9EYXRlKGRhdGUpIHtcbiAgLy8gdGhpcyBpcyBmYWxsYmFjayB0b29cbiAgLy8gaWYgKGlzTmlsKGRhdGUpKSByZXR1cm4gbmV3RGF0ZSgpXG4gIGlmIChpc0RhdGUoZGF0ZSkpIHJldHVybiBkYXRlXG4gIGlmIChpc051bWJlcihkYXRlKSkgcmV0dXJuIG5ld0RhdGUoZGF0ZSlcbiAgaWYgKGlzU3RyaW5nKGRhdGUpKSByZXR1cm4gRGF0ZS5wYXJzZShkYXRlKVxuICBpZiAoaXNBcnJheShkYXRlKSkgcmV0dXJuIG5ld0RhdGUuYXBwbHkodGhpcywgZGF0ZSlcbiAgZWxzZSByZXR1cm4gbmV3RGF0ZSgpXG59XG4iXSwibmFtZXMiOlsiY29uc3QiXSwibWFwcGluZ3MiOiJBQUFBQSxHQUFLLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQztBQUM5Q0EsR0FBSyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO0FBQ3BDQSxHQUFLLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxjQUFjLENBQUM7QUFDeENBLEdBQUssQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQztBQUN4Q0EsR0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO0FBQ3RDQSxHQUFLLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1QjVDLE1BQU0sQ0FBQyxPQUFPLEdBQUcsU0FBUyxNQUFNLENBQUMsSUFBSSxFQUFFOzs7RUFHckMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBQSxPQUFPLElBQUksRUFBQTtFQUM3QixJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFBLE9BQU8sT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFBO0VBQ3hDLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUEsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFBO0VBQzNDLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUEsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBQTtPQUM5QyxFQUFBLE9BQU8sT0FBTyxFQUFFLEVBQUE7Q0FDdEI7In0=