Blame view

node_modules/moment/src/lib/create/from-string-and-array.js 1.43 KB
ce4c83ff   wxy   初始提交
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
  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';
  
  // date from string and array of format strings
  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;
          }
  
          // if there is any input that was not parsed add a penalty for that format
          currentScore += getParsingFlags(tempConfig).charsLeftOver;
  
          //or tokens
          currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
  
          getParsingFlags(tempConfig).score = currentScore;
  
          if (scoreToBeat == null || currentScore < scoreToBeat) {
              scoreToBeat = currentScore;
              bestMoment = tempConfig;
          }
      }
  
      extend(config, bestMoment || tempConfig);
  }