massive update, probably broken
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / path-parse / index.js
1 'use strict';
2
3 var isWindows = process.platform === 'win32';
4
5 // Regex to split a windows path into into [dir, root, basename, name, ext]
6 var splitWindowsRe =
7     /^(((?:[a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?[\\\/]?)(?:[^\\\/]*[\\\/])*)((\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))[\\\/]*$/;
8
9 var win32 = {};
10
11 function win32SplitPath(filename) {
12   return splitWindowsRe.exec(filename).slice(1);
13 }
14
15 win32.parse = function(pathString) {
16   if (typeof pathString !== 'string') {
17     throw new TypeError(
18         "Parameter 'pathString' must be a string, not " + typeof pathString
19     );
20   }
21   var allParts = win32SplitPath(pathString);
22   if (!allParts || allParts.length !== 5) {
23     throw new TypeError("Invalid path '" + pathString + "'");
24   }
25   return {
26     root: allParts[1],
27     dir: allParts[0] === allParts[1] ? allParts[0] : allParts[0].slice(0, -1),
28     base: allParts[2],
29     ext: allParts[4],
30     name: allParts[3]
31   };
32 };
33
34
35
36 // Split a filename into [dir, root, basename, name, ext], unix version
37 // 'root' is just a slash, or nothing.
38 var splitPathRe =
39     /^((\/?)(?:[^\/]*\/)*)((\.{1,2}|[^\/]+?|)(\.[^.\/]*|))[\/]*$/;
40 var posix = {};
41
42
43 function posixSplitPath(filename) {
44   return splitPathRe.exec(filename).slice(1);
45 }
46
47
48 posix.parse = function(pathString) {
49   if (typeof pathString !== 'string') {
50     throw new TypeError(
51         "Parameter 'pathString' must be a string, not " + typeof pathString
52     );
53   }
54   var allParts = posixSplitPath(pathString);
55   if (!allParts || allParts.length !== 5) {
56     throw new TypeError("Invalid path '" + pathString + "'");
57   }
58   
59   return {
60     root: allParts[1],
61     dir: allParts[0].slice(0, -1),
62     base: allParts[2],
63     ext: allParts[4],
64     name: allParts[3],
65   };
66 };
67
68
69 if (isWindows)
70   module.exports = win32.parse;
71 else /* posix */
72   module.exports = posix.parse;
73
74 module.exports.posix = posix.parse;
75 module.exports.win32 = win32.parse;