UNPKG

920 BJavaScriptView Raw
1
2function createParser(def) {
3 var maskRe = /(\[)((?:\\?.)*?)\]|([YMD])\3\3\3?|([YMDHhmsWSZ])(\4?)|[uUASwoQ]|(["\\\n\r\u2028\u2029])/g
4 , escapeRe = /[.*+?^=!:${}()|\[\]\/\\]/g
5 , pos = {Y:0, M:1, D:2, h:3, m:4, s:5, S:6}
6 , f = []
7 , r = []
8 , g = 1
9 , i = 0
10 , len = def.length
11
12 for (; i<len; i++) {
13 var startLen = g
14 , arr = [1970, 0, 1, 0, 0, 0, 0]
15 , _re = def[i].replace(maskRe, function(match, quote, text, MD, single, pad, esc) {
16 return esc || text ?
17 (esc || text).replace(escapeRe, "\\$&") :
18 (arr[pos[MD || single]]="m[" + (g++) + "]") && "(\\d+)"
19 })
20
21 if (arr[1]) arr[1]+="-1"
22 //arr[4]+="-(" + new Date().getTimezoneOffset() + ")"
23
24 f.push("m[" + startLen + "]?new Date(Date.UTC(" + arr + "))")
25 r.push(_re)
26 }
27
28 return Function("r", "return function(u){var m=r.exec(u);return m?" + f.join(":") + ":null:null}")(RegExp("^(?:" + r.join("|") + ")$"))
29}
30exports.createParser = createParser
31
32