|
import { copyConfig } from '../moment/constructor'; |
|
import { configFromStringAndFormat } from './from-string-and-format'; |
|
import getParsingFlags from './parsing-flags'; |
|
import { isValid } from './valid'; |
|
import extend from '../utils/extend'; |
|
|
|
|
|
export function configFromStringAndArray(config) { |
|
var tempConfig, |
|
bestMoment, |
|
|
|
scoreToBeat, |
|
i, |
|
currentScore; |
|
|
|
if (config._f.length === 0) { |
|
getParsingFlags(config).invalidFormat = true; |
|
config._d = new Date(NaN); |
|
return; |
|
} |
|
|
|
for (i = 0; i < config._f.length; i++) { |
|
currentScore = 0; |
|
tempConfig = copyConfig({}, config); |
|
if (config._useUTC != null) { |
|
tempConfig._useUTC = config._useUTC; |
|
} |
|
tempConfig._f = config._f[i]; |
|
configFromStringAndFormat(tempConfig); |
|
|
|
if (!isValid(tempConfig)) { |
|
continue; |
|
} |
|
|
|
|
|
currentScore += getParsingFlags(tempConfig).charsLeftOver; |
|
|
|
|
|
currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; |
|
|
|
getParsingFlags(tempConfig).score = currentScore; |
|
|
|
if (scoreToBeat == null || currentScore < scoreToBeat) { |
|
scoreToBeat = currentScore; |
|
bestMoment = tempConfig; |
|
} |
|
} |
|
|
|
extend(config, bestMoment || tempConfig); |
|
} |
|
|