summaryrefslogtreecommitdiff
path: root/node_modules/locutus/php/datetime/strptime.js.map
blob: 843cd8933a5692b5ac537974ac5c68bd745b97c8 (plain) (blame)
1
{"version":3,"sources":["../../../src/php/datetime/strptime.js"],"names":["module","exports","strptime","dateStr","format","setlocale","require","arrayMap","retObj","tm_sec","tm_min","tm_hour","tm_mday","tm_mon","tm_year","tm_wday","tm_yday","unparsed","i","j","amPmOffset","prevHour","_reset","dateObj","realMday","jan1","o","d","getUTCSeconds","getUTCMinutes","getUTCHours","getUTCDate","getUTCMonth","getUTCFullYear","getUTCDay","Date","UTC","Math","ceil","_date","_NWS","_WS","_aggregates","c","D","F","r","R","T","x","X","_pregQuote","str","replace","$global","window","global","$locutus","locale","php","localeCategories","LC_TIME","lcTime","locales","match","m0","m1","f","_addNext","regex","cb","RegExp","check","slice","exec","testNull","apply","Error","length","_addLocalized","formatChar","category","join","m","search","charAt","literalPos","indexOf","year","parseInt","dayMonth","hour","dayYear","month","minute","test","timestamp","date","second","e"],"mappings":"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","file":"strptime.js","sourcesContent":["module.exports = function strptime (dateStr, format) {\n  //  discuss at: http://locutus.io/php/strptime/\n  // original by: Brett Zamir (http://brett-zamir.me)\n  // original by: strftime\n  //   example 1: strptime('20091112222135', '%Y%m%d%H%M%S') // Return value will depend on date and locale\n  //   returns 1: {tm_sec: 35, tm_min: 21, tm_hour: 22, tm_mday: 12, tm_mon: 10, tm_year: 109, tm_wday: 4, tm_yday: 315, unparsed: ''}\n  //   example 2: strptime('2009extra', '%Y')\n  //   returns 2: {tm_sec:0, tm_min:0, tm_hour:0, tm_mday:0, tm_mon:0, tm_year:109, tm_wday:3, tm_yday: -1, unparsed: 'extra'}\n\n  var setlocale = require('../strings/setlocale')\n  var arrayMap = require('../array/array_map')\n\n  var retObj = {\n    tm_sec: 0,\n    tm_min: 0,\n    tm_hour: 0,\n    tm_mday: 0,\n    tm_mon: 0,\n    tm_year: 0,\n    tm_wday: 0,\n    tm_yday: 0,\n    unparsed: ''\n  }\n  var i = 0\n  var j = 0\n  var amPmOffset = 0\n  var prevHour = false\n  var _reset = function (dateObj, realMday) {\n    // realMday is to allow for a value of 0 in return results (but without\n    // messing up the Date() object)\n    var jan1\n    var o = retObj\n    var d = dateObj\n    o.tm_sec = d.getUTCSeconds()\n    o.tm_min = d.getUTCMinutes()\n    o.tm_hour = d.getUTCHours()\n    o.tm_mday = realMday === 0 ? realMday : d.getUTCDate()\n    o.tm_mon = d.getUTCMonth()\n    o.tm_year = d.getUTCFullYear() - 1900\n    o.tm_wday = realMday === 0 ? (d.getUTCDay() > 0 ? d.getUTCDay() - 1 : 6) : d.getUTCDay()\n    jan1 = new Date(Date.UTC(d.getUTCFullYear(), 0, 1))\n    o.tm_yday = Math.ceil((d - jan1) / (1000 * 60 * 60 * 24))\n  }\n  var _date = function () {\n    var o = retObj\n    // We set date to at least 1 to ensure year or month doesn't go backwards\n    return _reset(new Date(Date.UTC(\n      o.tm_year + 1900,\n      o.tm_mon,\n      o.tm_mday || 1,\n      o.tm_hour,\n      o.tm_min,\n      o.tm_sec\n    )),\n    o.tm_mday)\n  }\n\n  var _NWS = /\\S/\n  var _WS = /\\s/\n\n  var _aggregates = {\n    c: 'locale',\n    D: '%m/%d/%y',\n    F: '%y-%m-%d',\n    r: 'locale',\n    R: '%H:%M',\n    T: '%H:%M:%S',\n    x: 'locale',\n    X: 'locale'\n  }\n\n  /* Fix: Locale alternatives are supported though not documented in PHP; see http://linux.die.net/man/3/strptime\n    Ec\n    EC\n    Ex\n    EX\n    Ey\n    EY\n    Od or Oe\n    OH\n    OI\n    Om\n    OM\n    OS\n    OU\n    Ow\n    OW\n    Oy\n  */\n  var _pregQuote = function (str) {\n    return (str + '').replace(/([\\\\.+*?[^\\]$(){}=!<>|:])/g, '\\\\$1')\n  }\n\n  // ensure setup of localization variables takes place\n  setlocale('LC_ALL', 0)\n\n  var $global = (typeof window !== 'undefined' ? window : global)\n  $global.$locutus = $global.$locutus || {}\n  var $locutus = $global.$locutus\n  var locale = $locutus.php.localeCategories.LC_TIME\n  var lcTime = $locutus.php.locales[locale].LC_TIME\n\n  // First replace aggregates (run in a loop because an agg may be made up of other aggs)\n  while (format.match(/%[cDFhnrRtTxX]/)) {\n    format = format.replace(/%([cDFhnrRtTxX])/g, function (m0, m1) {\n      var f = _aggregates[m1]\n      return (f === 'locale' ? lcTime[m1] : f)\n    })\n  }\n\n  var _addNext = function (j, regex, cb) {\n    if (typeof regex === 'string') {\n      regex = new RegExp('^' + regex, 'i')\n    }\n    var check = dateStr.slice(j)\n    var match = regex.exec(check)\n    // Even if the callback returns null after assigning to the\n    // return object, the object won't be saved anyways\n    var testNull = match ? cb.apply(null, match) : null\n    if (testNull === null) {\n      throw new Error('No match in string')\n    }\n    return j + match[0].length\n  }\n\n  var _addLocalized = function (j, formatChar, category) {\n    // Could make each parenthesized instead and pass index to callback:\n    return _addNext(j, arrayMap(_pregQuote, lcTime[formatChar]).join('|'),\n      function (m) {\n        var match = lcTime[formatChar].search(new RegExp('^' + _pregQuote(m) + '$', 'i'))\n        if (match) {\n          retObj[category] = match[0]\n        }\n      })\n  }\n\n  // BEGIN PROCESSING CHARACTERS\n  for (i = 0, j = 0; i < format.length; i++) {\n    if (format.charAt(i) === '%') {\n      var literalPos = ['%', 'n', 't'].indexOf(format.charAt(i + 1))\n      if (literalPos !== -1) {\n        if (['%', '\\n', '\\t'].indexOf(dateStr.charAt(j)) === literalPos) {\n          // a matched literal\n          ++i\n          // skip beyond\n          ++j\n          continue\n        }\n        // Format indicated a percent literal, but not actually present\n        return false\n      }\n      var formatChar = format.charAt(i + 1)\n      try {\n        switch (formatChar) {\n          case 'a':\n          case 'A':\n            // Sunday-Saturday\n            // Changes nothing else\n            j = _addLocalized(j, formatChar, 'tm_wday')\n            break\n          case 'h':\n          case 'b':\n            // Jan-Dec\n            j = _addLocalized(j, 'b', 'tm_mon')\n            // Also changes wday, yday\n            _date()\n            break\n          case 'B':\n            // January-December\n            j = _addLocalized(j, formatChar, 'tm_mon')\n            // Also changes wday, yday\n            _date()\n            break\n          case 'C':\n            // 0+; century (19 for 20th)\n            // PHP docs say two-digit, but accepts one-digit (two-digit max):\n            j = _addNext(j, /^\\d?\\d/,\n\n            function (d) {\n              var year = (parseInt(d, 10) - 19) * 100\n              retObj.tm_year = year\n              _date()\n              if (!retObj.tm_yday) {\n                retObj.tm_yday = -1\n              }\n              // Also changes wday; and sets yday to -1 (always?)\n            })\n            break\n          case 'd':\n          case 'e':\n            // 1-31 day\n            j = _addNext(j, formatChar === 'd'\n              ? /^(0[1-9]|[1-2]\\d|3[0-1])/\n              : /^([1-2]\\d|3[0-1]|[1-9])/,\n            function (d) {\n              var dayMonth = parseInt(d, 10)\n              retObj.tm_mday = dayMonth\n              // Also changes w_day, y_day\n              _date()\n            })\n            break\n          case 'g':\n            // No apparent effect; 2-digit year (see 'V')\n            break\n          case 'G':\n            // No apparent effect; 4-digit year (see 'V')'\n            break\n          case 'H':\n            // 00-23 hours\n            j = _addNext(j, /^([0-1]\\d|2[0-3])/, function (d) {\n              var hour = parseInt(d, 10)\n              retObj.tm_hour = hour\n              // Changes nothing else\n            })\n            break\n          case 'l':\n          case 'I':\n            // 01-12 hours\n            j = _addNext(j, formatChar === 'l'\n              ? /^([1-9]|1[0-2])/\n              : /^(0[1-9]|1[0-2])/,\n            function (d) {\n              var hour = parseInt(d, 10) - 1 + amPmOffset\n              retObj.tm_hour = hour\n              // Used for coordinating with am-pm\n              prevHour = true\n              // Changes nothing else, but affected by prior 'p/P'\n            })\n            break\n          case 'j':\n            // 001-366 day of year\n            j = _addNext(j, /^(00[1-9]|0[1-9]\\d|[1-2]\\d\\d|3[0-6][0-6])/, function (d) {\n              var dayYear = parseInt(d, 10) - 1\n              retObj.tm_yday = dayYear\n              // Changes nothing else\n              // (oddly, since if original by a given year, could calculate other fields)\n            })\n            break\n          case 'm':\n            // 01-12 month\n            j = _addNext(j, /^(0[1-9]|1[0-2])/, function (d) {\n              var month = parseInt(d, 10) - 1\n              retObj.tm_mon = month\n            // Also sets wday and yday\n              _date()\n            })\n            break\n          case 'M':\n            // 00-59 minutes\n            j = _addNext(j, /^[0-5]\\d/, function (d) {\n              var minute = parseInt(d, 10)\n              retObj.tm_min = minute\n            // Changes nothing else\n            })\n            break\n          case 'P':\n            // Seems not to work; AM-PM\n            // Could make fall-through instead since supposed to be a synonym despite PHP docs\n            return false\n          case 'p':\n            // am-pm\n            j = _addNext(j, /^(am|pm)/i, function (d) {\n              // No effect on 'H' since already 24 hours but\n              //   works before or after setting of l/I hour\n              amPmOffset = (/a/)\n              .test(d) ? 0 : 12\n              if (prevHour) {\n                retObj.tm_hour += amPmOffset\n              }\n            })\n            break\n          case 's':\n            // Unix timestamp (in seconds)\n            j = _addNext(j, /^\\d+/, function (d) {\n              var timestamp = parseInt(d, 10)\n              var date = new Date(Date.UTC(timestamp * 1000))\n              _reset(date)\n              // Affects all fields, but can't be negative (and initial + not allowed)\n            })\n            break\n          case 'S':\n            // 00-59 seconds\n            j = _addNext(j, /^[0-5]\\d/, // strptime also accepts 60-61 for some reason\n\n            function (d) {\n              var second = parseInt(d, 10)\n              retObj.tm_sec = second\n              // Changes nothing else\n            })\n            break\n          case 'u':\n          case 'w':\n            // 0 (Sunday)-6(Saturday)\n            j = _addNext(j, /^\\d/, function (d) {\n              retObj.tm_wday = d - (formatChar === 'u')\n              // Changes nothing else apparently\n            })\n            break\n          case 'U':\n          case 'V':\n          case 'W':\n            // Apparently ignored (week of year, from 1st Monday)\n            break\n          case 'y':\n            // 69 (or higher) for 1969+, 68 (or lower) for 2068-\n             // PHP docs say two-digit, but accepts one-digit (two-digit max):\n            j = _addNext(j, /^\\d?\\d/,\n\n            function (d) {\n              d = parseInt(d, 10)\n              var year = d >= 69 ? d : d + 100\n              retObj.tm_year = year\n              _date()\n              if (!retObj.tm_yday) {\n                retObj.tm_yday = -1\n              }\n              // Also changes wday; and sets yday to -1 (always?)\n            })\n            break\n          case 'Y':\n            // 2010 (4-digit year)\n            // PHP docs say four-digit, but accepts one-digit (four-digit max):\n            j = _addNext(j, /^\\d{1,4}/,\n\n            function (d) {\n              var year = (parseInt(d, 10)) - 1900\n              retObj.tm_year = year\n              _date()\n              if (!retObj.tm_yday) {\n                retObj.tm_yday = -1\n              }\n              // Also changes wday; and sets yday to -1 (always?)\n            })\n            break\n          case 'z':\n            // Timezone; on my system, strftime gives -0800,\n            // but strptime seems not to alter hour setting\n            break\n          case 'Z':\n            // Timezone; on my system, strftime gives PST, but strptime treats text as unparsed\n            break\n          default:\n            throw new Error('Unrecognized formatting character in strptime()')\n        }\n      } catch (e) {\n        if (e === 'No match in string') {\n          // Allow us to exit\n          // There was supposed to be a matching format but there wasn't\n          return false\n        }\n        // Calculate skipping beyond initial percent too\n      }\n      ++i\n    } else if (format.charAt(i) !== dateStr.charAt(j)) {\n      // If extra whitespace at beginning or end of either, or between formats, no problem\n      // (just a problem when between % and format specifier)\n\n      // If the string has white-space, it is ok to ignore\n      if (dateStr.charAt(j).search(_WS) !== -1) {\n        j++\n        // Let the next iteration try again with the same format character\n        i--\n      } else if (format.charAt(i).search(_NWS) !== -1) {\n        // Any extra formatting characters besides white-space causes\n        // problems (do check after WS though, as may just be WS in string before next character)\n        return false\n      }\n      // Extra WS in format\n      // Adjust strings when encounter non-matching whitespace, so they align in future checks above\n      // Will check on next iteration (against same (non-WS) string character)\n    } else {\n      j++\n    }\n  }\n\n  // POST-PROCESSING\n  // Will also get extra whitespace; empty string if none\n  retObj.unparsed = dateStr.slice(j)\n  return retObj\n}\n"]}