1
|
{"version":3,"sources":["../../../src/php/filesystem/pathinfo.js"],"names":["module","exports","pathinfo","path","options","basename","require","opt","realOpt","optName","optTemp","tmpArr","cnt","i","haveBasename","haveExtension","haveFilename","OPTS","hasOwnProperty","PATHINFO_ALL","concat","length","_getExt","str","dotP","lastIndexOf","substr","PATHINFO_DIRNAME","dirName","replace","dirname","PATHINFO_BASENAME","PATHINFO_EXTENSION","extension","PATHINFO_FILENAME","slice","filename"],"mappings":"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","file":"pathinfo.js","sourcesContent":["module.exports = function pathinfo (path, options) {\n // discuss at: http://locutus.io/php/pathinfo/\n // original by: Nate\n // revised by: Kevin van Zonneveld (http://kvz.io)\n // improved by: Brett Zamir (http://brett-zamir.me)\n // improved by: Dmitry Gorelenkov\n // input by: Timo\n // note 1: Inspired by actual PHP source: php5-5.2.6/ext/standard/string.c line #1559\n // note 1: The way the bitwise arguments are handled allows for greater flexibility\n // note 1: & compatability. We might even standardize this\n // note 1: code and use a similar approach for\n // note 1: other bitwise PHP functions\n // note 1: Locutus tries very hard to stay away from a core.js\n // note 1: file with global dependencies, because we like\n // note 1: that you can just take a couple of functions and be on your way.\n // note 1: But by way we implemented this function,\n // note 1: if you want you can still declare the PATHINFO_*\n // note 1: yourself, and then you can use:\n // note 1: pathinfo('/www/index.html', PATHINFO_BASENAME | PATHINFO_EXTENSION);\n // note 1: which makes it fully compliant with PHP syntax.\n // example 1: pathinfo('/www/htdocs/index.html', 1)\n // returns 1: '/www/htdocs'\n // example 2: pathinfo('/www/htdocs/index.html', 'PATHINFO_BASENAME')\n // returns 2: 'index.html'\n // example 3: pathinfo('/www/htdocs/index.html', 'PATHINFO_EXTENSION')\n // returns 3: 'html'\n // example 4: pathinfo('/www/htdocs/index.html', 'PATHINFO_FILENAME')\n // returns 4: 'index'\n // example 5: pathinfo('/www/htdocs/index.html', 2 | 4)\n // returns 5: {basename: 'index.html', extension: 'html'}\n // example 6: pathinfo('/www/htdocs/index.html', 'PATHINFO_ALL')\n // returns 6: {dirname: '/www/htdocs', basename: 'index.html', extension: 'html', filename: 'index'}\n // example 7: pathinfo('/www/htdocs/index.html')\n // returns 7: {dirname: '/www/htdocs', basename: 'index.html', extension: 'html', filename: 'index'}\n\n var basename = require('../filesystem/basename')\n var opt = ''\n var realOpt = ''\n var optName = ''\n var optTemp = 0\n var tmpArr = {}\n var cnt = 0\n var i = 0\n var haveBasename = false\n var haveExtension = false\n var haveFilename = false\n\n // Input defaulting & sanitation\n if (!path) {\n return false\n }\n if (!options) {\n options = 'PATHINFO_ALL'\n }\n\n // Initialize binary arguments. Both the string & integer (constant) input is\n // allowed\n var OPTS = {\n 'PATHINFO_DIRNAME': 1,\n 'PATHINFO_BASENAME': 2,\n 'PATHINFO_EXTENSION': 4,\n 'PATHINFO_FILENAME': 8,\n 'PATHINFO_ALL': 0\n }\n // PATHINFO_ALL sums up all previously defined PATHINFOs (could just pre-calculate)\n for (optName in OPTS) {\n if (OPTS.hasOwnProperty(optName)) {\n OPTS.PATHINFO_ALL = OPTS.PATHINFO_ALL | OPTS[optName]\n }\n }\n if (typeof options !== 'number') {\n // Allow for a single string or an array of string flags\n options = [].concat(options)\n for (i = 0; i < options.length; i++) {\n // Resolve string input to bitwise e.g. 'PATHINFO_EXTENSION' becomes 4\n if (OPTS[options[i]]) {\n optTemp = optTemp | OPTS[options[i]]\n }\n }\n options = optTemp\n }\n\n // Internal Functions\n var _getExt = function (path) {\n var str = path + ''\n var dotP = str.lastIndexOf('.') + 1\n return !dotP ? false : dotP !== str.length ? str.substr(dotP) : ''\n }\n\n // Gather path infos\n if (options & OPTS.PATHINFO_DIRNAME) {\n var dirName = path\n .replace(/\\\\/g, '/')\n .replace(/\\/[^/]*\\/?$/, '') // dirname\n tmpArr.dirname = dirName === path ? '.' : dirName\n }\n\n if (options & OPTS.PATHINFO_BASENAME) {\n if (haveBasename === false) {\n haveBasename = basename(path)\n }\n tmpArr.basename = haveBasename\n }\n\n if (options & OPTS.PATHINFO_EXTENSION) {\n if (haveBasename === false) {\n haveBasename = basename(path)\n }\n if (haveExtension === false) {\n haveExtension = _getExt(haveBasename)\n }\n if (haveExtension !== false) {\n tmpArr.extension = haveExtension\n }\n }\n\n if (options & OPTS.PATHINFO_FILENAME) {\n if (haveBasename === false) {\n haveBasename = basename(path)\n }\n if (haveExtension === false) {\n haveExtension = _getExt(haveBasename)\n }\n if (haveFilename === false) {\n haveFilename = haveBasename.slice(0, haveBasename.length - (haveExtension\n ? haveExtension.length + 1\n : haveExtension === false\n ? 0\n : 1\n )\n )\n }\n\n tmpArr.filename = haveFilename\n }\n\n // If array contains only 1 element: return string\n cnt = 0\n for (opt in tmpArr) {\n if (tmpArr.hasOwnProperty(opt)) {\n cnt++\n realOpt = opt\n }\n }\n if (cnt === 1) {\n return tmpArr[realOpt]\n }\n\n // Return full-blown array\n return tmpArr\n}\n"]}
|