| | 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); |
| | } |
| |
|