summaryrefslogtreecommitdiff
path: root/node_modules/locutus/php/strings/sprintf.js.map
blob: 1a753d8a36d454ec0903c4e341f1619c42a4bdd1 (plain) (blame)
1
{"version":3,"sources":["../../../src/php/strings/sprintf.js"],"names":["module","exports","sprintf","regex","args","arguments","i","format","_pad","str","len","chr","leftJustify","padding","length","Array","join","justify","value","prefix","minWidth","padChar","diff","slice","_formatBaseX","base","precision","number","toString","_formatString","customPadChar","undefined","doFormat","substring","argIndex","modifiers","specifier","method","textTransform","positiveNumberPrefix","j","l","charAt","isFinite","Error","indexOf","String","fromCharCode","toUpperCase","Math","round","abs","toLowerCase","replace","err"],"mappings":"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","file":"sprintf.js","sourcesContent":["module.exports = function sprintf () {\n  //  discuss at: http://locutus.io/php/sprintf/\n  // original by: Ash Searle (http://hexmen.com/blog/)\n  // improved by: Michael White (http://getsprink.com)\n  // improved by: Jack\n  // improved by: Kevin van Zonneveld (http://kvz.io)\n  // improved by: Kevin van Zonneveld (http://kvz.io)\n  // improved by: Kevin van Zonneveld (http://kvz.io)\n  // improved by: Dj\n  // improved by: Allidylls\n  //    input by: Paulo Freitas\n  //    input by: Brett Zamir (http://brett-zamir.me)\n  // improved by: Rafał Kukawski (http://kukawski.pl)\n  //   example 1: sprintf(\"%01.2f\", 123.1)\n  //   returns 1: '123.10'\n  //   example 2: sprintf(\"[%10s]\", 'monkey')\n  //   returns 2: '[    monkey]'\n  //   example 3: sprintf(\"[%'#10s]\", 'monkey')\n  //   returns 3: '[####monkey]'\n  //   example 4: sprintf(\"%d\", 123456789012345)\n  //   returns 4: '123456789012345'\n  //   example 5: sprintf('%-03s', 'E')\n  //   returns 5: 'E00'\n  //   example 6: sprintf('%+010d', 9)\n  //   returns 6: '+000000009'\n  //   example 7: sprintf('%+0\\'@10d', 9)\n  //   returns 7: '@@@@@@@@+9'\n  //   example 8: sprintf('%.f', 3.14)\n  //   returns 8: '3.140000'\n  //   example 9: sprintf('%% %2$d', 1, 2)\n  //   returns 9: '% 2'\n\n  var regex = /%%|%(?:(\\d+)\\$)?((?:[-+#0 ]|'[\\s\\S])*)(\\d+)?(?:\\.(\\d*))?([\\s\\S])/g\n  var args = arguments\n  var i = 0\n  var format = args[i++]\n\n  var _pad = function (str, len, chr, leftJustify) {\n    if (!chr) {\n      chr = ' '\n    }\n    var padding = (str.length >= len) ? '' : new Array(1 + len - str.length >>> 0).join(chr)\n    return leftJustify ? str + padding : padding + str\n  }\n\n  var justify = function (value, prefix, leftJustify, minWidth, padChar) {\n    var diff = minWidth - value.length\n    if (diff > 0) {\n      // when padding with zeros\n      // on the left side\n      // keep sign (+ or -) in front\n      if (!leftJustify && padChar === '0') {\n        value = [\n          value.slice(0, prefix.length),\n          _pad('', diff, '0', true),\n          value.slice(prefix.length)\n        ].join('')\n      } else {\n        value = _pad(value, minWidth, padChar, leftJustify)\n      }\n    }\n    return value\n  }\n\n  var _formatBaseX = function (value, base, leftJustify, minWidth, precision, padChar) {\n    // Note: casts negative numbers to positive ones\n    var number = value >>> 0\n    value = _pad(number.toString(base), precision || 0, '0', false)\n    return justify(value, '', leftJustify, minWidth, padChar)\n  }\n\n  // _formatString()\n  var _formatString = function (value, leftJustify, minWidth, precision, customPadChar) {\n    if (precision !== null && precision !== undefined) {\n      value = value.slice(0, precision)\n    }\n    return justify(value, '', leftJustify, minWidth, customPadChar)\n  }\n\n  // doFormat()\n  var doFormat = function (substring, argIndex, modifiers, minWidth, precision, specifier) {\n    var number, prefix, method, textTransform, value\n\n    if (substring === '%%') {\n      return '%'\n    }\n\n    // parse modifiers\n    var padChar = ' ' // pad with spaces by default\n    var leftJustify = false\n    var positiveNumberPrefix = ''\n    var j, l\n\n    for (j = 0, l = modifiers.length; j < l; j++) {\n      switch (modifiers.charAt(j)) {\n        case ' ':\n        case '0':\n          padChar = modifiers.charAt(j)\n          break\n        case '+':\n          positiveNumberPrefix = '+'\n          break\n        case '-':\n          leftJustify = true\n          break\n        case \"'\":\n          if (j + 1 < l) {\n            padChar = modifiers.charAt(j + 1)\n            j++\n          }\n          break\n      }\n    }\n\n    if (!minWidth) {\n      minWidth = 0\n    } else {\n      minWidth = +minWidth\n    }\n\n    if (!isFinite(minWidth)) {\n      throw new Error('Width must be finite')\n    }\n\n    if (!precision) {\n      precision = (specifier === 'd') ? 0 : 'fFeE'.indexOf(specifier) > -1 ? 6 : undefined\n    } else {\n      precision = +precision\n    }\n\n    if (argIndex && +argIndex === 0) {\n      throw new Error('Argument number must be greater than zero')\n    }\n\n    if (argIndex && +argIndex >= args.length) {\n      throw new Error('Too few arguments')\n    }\n\n    value = argIndex ? args[+argIndex] : args[i++]\n\n    switch (specifier) {\n      case '%':\n        return '%'\n      case 's':\n        return _formatString(value + '', leftJustify, minWidth, precision, padChar)\n      case 'c':\n        return _formatString(String.fromCharCode(+value), leftJustify, minWidth, precision, padChar)\n      case 'b':\n        return _formatBaseX(value, 2, leftJustify, minWidth, precision, padChar)\n      case 'o':\n        return _formatBaseX(value, 8, leftJustify, minWidth, precision, padChar)\n      case 'x':\n        return _formatBaseX(value, 16, leftJustify, minWidth, precision, padChar)\n      case 'X':\n        return _formatBaseX(value, 16, leftJustify, minWidth, precision, padChar)\n          .toUpperCase()\n      case 'u':\n        return _formatBaseX(value, 10, leftJustify, minWidth, precision, padChar)\n      case 'i':\n      case 'd':\n        number = +value || 0\n        // Plain Math.round doesn't just truncate\n        number = Math.round(number - number % 1)\n        prefix = number < 0 ? '-' : positiveNumberPrefix\n        value = prefix + _pad(String(Math.abs(number)), precision, '0', false)\n\n        if (leftJustify && padChar === '0') {\n          // can't right-pad 0s on integers\n          padChar = ' '\n        }\n        return justify(value, prefix, leftJustify, minWidth, padChar)\n      case 'e':\n      case 'E':\n      case 'f': // @todo: Should handle locales (as per setlocale)\n      case 'F':\n      case 'g':\n      case 'G':\n        number = +value\n        prefix = number < 0 ? '-' : positiveNumberPrefix\n        method = ['toExponential', 'toFixed', 'toPrecision']['efg'.indexOf(specifier.toLowerCase())]\n        textTransform = ['toString', 'toUpperCase']['eEfFgG'.indexOf(specifier) % 2]\n        value = prefix + Math.abs(number)[method](precision)\n        return justify(value, prefix, leftJustify, minWidth, padChar)[textTransform]()\n      default:\n        // unknown specifier, consume that char and return empty\n        return ''\n    }\n  }\n\n  try {\n    return format.replace(regex, doFormat)\n  } catch (err) {\n    return false\n  }\n}\n"]}