You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.1 KiB
54 lines
1.1 KiB
import hasOwnProp from '../utils/has-own-prop';
|
|
import toInt from '../utils/to-int';
|
|
import indexOf from '../utils/index-of';
|
|
import { createDuration } from './create';
|
|
|
|
var ordering = [
|
|
'year',
|
|
'quarter',
|
|
'month',
|
|
'week',
|
|
'day',
|
|
'hour',
|
|
'minute',
|
|
'second',
|
|
'millisecond',
|
|
];
|
|
|
|
export default function isDurationValid(m) {
|
|
var key,
|
|
unitHasDecimal = false,
|
|
i;
|
|
for (key in m) {
|
|
if (
|
|
hasOwnProp(m, key) &&
|
|
!(
|
|
indexOf.call(ordering, key) !== -1 &&
|
|
(m[key] == null || !isNaN(m[key]))
|
|
)
|
|
) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
for (i = 0; i < ordering.length; ++i) {
|
|
if (m[ordering[i]]) {
|
|
if (unitHasDecimal) {
|
|
return false; // only allow non-integers for smallest unit
|
|
}
|
|
if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
|
|
unitHasDecimal = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
export function isValid() {
|
|
return this._isValid;
|
|
}
|
|
|
|
export function createInvalid() {
|
|
return createDuration(NaN);
|
|
}
|
|
|