1 import { copyConfig } from '../moment/constructor';
2 import { configFromStringAndFormat } from './from-string-and-format';
3 import getParsingFlags from './parsing-flags';
4 import { isValid } from './valid';
5 import extend from '../utils/extend';
7 // date from string and array of format strings
8 export function configFromStringAndArray(config) {
16 if (config._f.length === 0) {
17 getParsingFlags(config).invalidFormat = true;
18 config._d = new Date(NaN);
22 for (i = 0; i < config._f.length; i++) {
24 tempConfig = copyConfig({}, config);
25 if (config._useUTC != null) {
26 tempConfig._useUTC = config._useUTC;
28 tempConfig._f = config._f[i];
29 configFromStringAndFormat(tempConfig);
31 if (!isValid(tempConfig)) {
35 // if there is any input that was not parsed add a penalty for that format
36 currentScore += getParsingFlags(tempConfig).charsLeftOver;
39 currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
41 getParsingFlags(tempConfig).score = currentScore;
43 if (scoreToBeat == null || currentScore < scoreToBeat) {
44 scoreToBeat = currentScore;
45 bestMoment = tempConfig;
49 extend(config, bestMoment || tempConfig);