UNPKG

litejs

Version:

Single-page application framework

33 lines (25 loc) 920 B
function createParser(def) { var maskRe = /(\[)((?:\\?.)*?)\]|([YMD])\3\3\3?|([YMDHhmsWSZ])(\4?)|[uUASwoQ]|(["\\\n\r\u2028\u2029])/g , escapeRe = /[.*+?^=!:${}()|\[\]\/\\]/g , pos = {Y:0, M:1, D:2, h:3, m:4, s:5, S:6} , f = [] , r = [] , g = 1 , i = 0 , len = def.length for (; i<len; i++) { var startLen = g , arr = [1970, 0, 1, 0, 0, 0, 0] , _re = def[i].replace(maskRe, function(match, quote, text, MD, single, pad, esc) { return esc || text ? (esc || text).replace(escapeRe, "\\$&") : (arr[pos[MD || single]]="m[" + (g++) + "]") && "(\\d+)" }) if (arr[1]) arr[1]+="-1" //arr[4]+="-(" + new Date().getTimezoneOffset() + ")" f.push("m[" + startLen + "]?new Date(Date.UTC(" + arr + "))") r.push(_re) } return Function("r", "return function(u){var m=r.exec(u);return m?" + f.join(":") + ":null:null}")(RegExp("^(?:" + r.join("|") + ")$")) } exports.createParser = createParser