Sha256: 4d14a68a86200bf9c4772155c003e6815428ba2726d6e5ed49484963fe133138

Contents?: true

Size: 1.91 KB

Versions: 19

Compression:

Stored size: 1.91 KB

Contents

import isObjectEmpty from './is-object-empty';
import hasOwnProp from './has-own-prop';
import isObject from './is-object';
import isDate from './is-date';
import isNumber from './is-number';
import isString from './is-string';
import { isMoment } from '../moment/constructor';
import isArray from './is-array';

// type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined
export function isMomentInput(input) {
    return (
        isMoment(input) ||
        isDate(input) ||
        isString(input) ||
        isNumber(input) ||
        isNumberOrStringArray(input) ||
        isMomentInputObject(input) ||
        input === null ||
        input === undefined
    );
}

export function isMomentInputObject(input) {
    var objectTest = isObject(input) && !isObjectEmpty(input),
        propertyTest = false,
        properties = [
            'years',
            'year',
            'y',
            'months',
            'month',
            'M',
            'days',
            'day',
            'd',
            'dates',
            'date',
            'D',
            'hours',
            'hour',
            'h',
            'minutes',
            'minute',
            'm',
            'seconds',
            'second',
            's',
            'milliseconds',
            'millisecond',
            'ms',
        ],
        i,
        property;

    for (i = 0; i < properties.length; i += 1) {
        property = properties[i];
        propertyTest = propertyTest || hasOwnProp(input, property);
    }

    return objectTest && propertyTest;
}

function isNumberOrStringArray(input) {
    var arrayTest = isArray(input),
        dataTypeTest = false;
    if (arrayTest) {
        dataTypeTest =
            input.filter(function (item) {
                return !isNumber(item) && isString(input);
            }).length === 0;
    }
    return arrayTest && dataTypeTest;
}

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
card-mod-date-0.15.6 vendor/moment/src/lib/utils/is-moment-input.js
card-mod-date-0.15.0 vendor/moment/src/lib/utils/is-moment-input.js
card-mod-date-0.14.2 vendor/moment/src/lib/utils/is-moment-input.js
card-mod-date-0.14.1 vendor/moment/src/lib/utils/is-moment-input.js
card-mod-date-0.14.0 vendor/moment/src/lib/utils/is-moment-input.js
card-mod-date-0.13.4 vendor/moment/src/lib/utils/is-moment-input.js
card-mod-date-0.13.3 vendor/moment/src/lib/utils/is-moment-input.js
card-mod-date-0.13.2 vendor/moment/src/lib/utils/is-moment-input.js
card-mod-date-0.13.1 vendor/moment/src/lib/utils/is-moment-input.js
card-mod-date-0.13.0 vendor/moment/src/lib/utils/is-moment-input.js
card-mod-date-0.11.7 vendor/moment/src/lib/utils/is-moment-input.js
card-mod-date-0.12.0 vendor/moment/src/lib/utils/is-moment-input.js
card-mod-date-0.11.6 vendor/moment/src/lib/utils/is-moment-input.js
card-mod-date-0.11.5 vendor/moment/src/lib/utils/is-moment-input.js
card-mod-date-0.11.4 vendor/moment/src/lib/utils/is-moment-input.js
card-mod-date-0.11.3 vendor/moment/src/lib/utils/is-moment-input.js
card-mod-date-0.11.2 vendor/moment/src/lib/utils/is-moment-input.js
card-mod-date-0.11.1 vendor/moment/src/lib/utils/is-moment-input.js
card-mod-date-0.11.0 vendor/moment/src/lib/utils/is-moment-input.js