| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent e00c8cd commit 348f1fb
1 file changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -270,77 +270,67 @@ const win32 = { | |||
| 270 | 270 | const code = path.charCodeAt(0); | |
| 271 | 271 | ||
| 272 | 272 | // Try to match a root | |
| 273 | - if (len > 1) { | ||
| 274 | - if (isPathSeparator(code)) { | ||
| 275 | - // Possible UNC root | ||
| 276 | - | ||
| 277 | - // If we started with a separator, we know we at least have an absolute | ||
| 278 | - // path of some kind (UNC or otherwise) | ||
| 279 | - isAbsolute = true; | ||
| 273 | + if (len === 1) { | ||
| 274 | + // `path` contains just a single char, exit early to avoid | ||
| 275 | + // unnecessary work | ||
| 276 | + return isPosixPathSeparator(code) ? '\\' : path; | ||
| 277 | + } | ||
| 278 | + if (isPathSeparator(code)) { | ||
| 279 | + // Possible UNC root | ||
| 280 | 280 | ||
| 281 | - if (isPathSeparator(path.charCodeAt(1))) { | ||
| 282 | - // Matched double path separator at beginning | ||
| 283 | - var j = 2; | ||
| 284 | - var last = j; | ||
| 285 | - // Match 1 or more non-path separators | ||
| 286 | - for (; j < len; ++j) { | ||
| 287 | - if (isPathSeparator(path.charCodeAt(j))) | ||
| 288 | - break; | ||
| 281 | + // If we started with a separator, we know we at least have an absolute | ||
| 282 | + // path of some kind (UNC or otherwise) | ||
| 283 | + isAbsolute = true; | ||
| 284 | + | ||
| 285 | + if (isPathSeparator(path.charCodeAt(1))) { | ||
| 286 | + // Matched double path separator at beginning | ||
| 287 | + let j = 2; | ||
| 288 | + let last = j; | ||
| 289 | + // Match 1 or more non-path separators | ||
| 290 | + while (j < len && !isPathSeparator(path.charCodeAt(j))) { | ||
| 291 | + j++; | ||
| 292 | + } | ||
| 293 | + if (j < len && j !== last) { | ||
| 294 | + const firstPart = path.slice(last, j); | ||
| 295 | + // Matched! | ||
| 296 | + last = j; | ||
| 297 | + // Match 1 or more path separators | ||
| 298 | + while (j < len && isPathSeparator(path.charCodeAt(j))) { | ||
| 299 | + j++; | ||
| 289 | 300 | } | |
| 290 | 301 | if (j < len && j !== last) { | |
| 291 | - const firstPart = path.slice(last, j); | ||
| 292 | 302 | // Matched! | |
| 293 | 303 | last = j; | |
| 294 | - // Match 1 or more path separators | ||
| 295 | - for (; j < len; ++j) { | ||
| 296 | - if (!isPathSeparator(path.charCodeAt(j))) | ||
| 297 | - break; | ||
| 304 | + // Match 1 or more non-path separators | ||
| 305 | + while (j < len && !isPathSeparator(path.charCodeAt(j))) { | ||
| 306 | + j++; | ||
| 298 | 307 | } | |
| 299 | - if (j < len && j !== last) { | ||
| 300 | - // Matched! | ||
| 301 | - last = j; | ||
| 302 | - // Match 1 or more non-path separators | ||
| 303 | - for (; j < len; ++j) { | ||
| 304 | - if (isPathSeparator(path.charCodeAt(j))) | ||
| 305 | - break; | ||
| 306 | - } | ||
| 307 | - if (j === len) { | ||
| 308 | - // We matched a UNC root only | ||
| 309 | - // Return the normalized version of the UNC root since there | ||
| 310 | - // is nothing left to process | ||
| 311 | - | ||
| 312 | - return '\\\\' + firstPart + '\\' + path.slice(last) + '\\'; | ||
| 313 | - } else if (j !== last) { | ||
| 314 | - // We matched a UNC root with leftovers | ||
| 315 | - | ||
| 316 | - device = '\\\\' + firstPart + '\\' + path.slice(last, j); | ||
| 317 | - rootEnd = j; | ||
| 318 | - } | ||
| 308 | + if (j === len) { | ||
| 309 | + // We matched a UNC root only | ||
| 310 | + // Return the normalized version of the UNC root since there | ||
| 311 | + // is nothing left to process | ||
| 312 | + return `\\\\${firstPart}\\${path.slice(last)}\\`; | ||
| 319 | 313 | } | |
| 320 | - } | ||
| 321 | - } else { | ||
| 322 | - rootEnd = 1; | ||
| 323 | - } | ||
| 324 | - } else if (isWindowsDeviceRoot(code)) { | ||
| 325 | - // Possible device root | ||
| 326 | - | ||
| 327 | - if (path.charCodeAt(1) === CHAR_COLON) { | ||
| 328 | - device = path.slice(0, 2); | ||
| 329 | - rootEnd = 2; | ||
| 330 | - if (len > 2) { | ||
| 331 | - if (isPathSeparator(path.charCodeAt(2))) { | ||
| 332 | - // Treat separator following drive name as an absolute path | ||
| 333 | - // indicator | ||
| 334 | - isAbsolute = true; | ||
| 335 | - rootEnd = 3; | ||
| 314 | + if (j !== last) { | ||
| 315 | + // We matched a UNC root with leftovers | ||
| 316 | + device = `\\\\${firstPart}\\${path.slice(last, j)}`; | ||
| 317 | + rootEnd = j; | ||
| 336 | 318 | } | |
| 337 | 319 | } | |
| 338 | 320 | } | |
| 321 | + } else { | ||
| 322 | + rootEnd = 1; | ||
| 323 | + } | ||
| 324 | + } else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) { | ||
| 325 | + // Possible device root | ||
| 326 | + device = path.slice(0, 2); | ||
| 327 | + rootEnd = 2; | ||
| 328 | + if (len > 2 && isPathSeparator(path.charCodeAt(2))) { | ||
| 329 | + // Treat separator following drive name as an absolute path | ||
| 330 | + // indicator | ||
| 331 | + isAbsolute = true; | ||
| 332 | + rootEnd = 3; | ||
| 339 | 333 | } | |
| 340 | - } else if (isPathSeparator(code)) { | ||
| 341 | - // `path` contains just a path separator, exit early to avoid unnecessary | ||
| 342 | - // work | ||
| 343 | - return '\\'; | ||
| 344 | 334 | } | |
| 345 | 335 | ||
| 346 | 336 | let tail = rootEnd < len ? | |
@@ -592,75 +582,66 @@ const win32 = { | |||
| 592 | 582 | const len = path.length; | |
| 593 | 583 | if (len === 0) | |
| 594 | 584 | return '.'; | |
| 595 | - var rootEnd = -1; | ||
| 596 | - var end = -1; | ||
| 597 | - var matchedSlash = true; | ||
| 598 | - var offset = 0; | ||
| 585 | + let rootEnd = -1; | ||
| 586 | + let offset = 0; | ||
| 599 | 587 | const code = path.charCodeAt(0); | |
| 600 | 588 | ||
| 589 | + if (len === 1) { | ||
| 590 | + // `path` contains just a path separator, exit early to avoid | ||
| 591 | + // unnecessary work or a dot. | ||
| 592 | + return isPathSeparator(code) ? path : '.'; | ||
| 593 | + } | ||
| 594 | + | ||
| 601 | 595 | // Try to match a root | |
| 602 | - if (len > 1) { | ||
| 603 | - if (isPathSeparator(code)) { | ||
| 604 | - // Possible UNC root | ||
| 605 | - | ||
| 606 | - rootEnd = offset = 1; | ||
| 607 | - | ||
| 608 | - if (isPathSeparator(path.charCodeAt(1))) { | ||
| 609 | - // Matched double path separator at beginning | ||
| 610 | - var j = 2; | ||
| 611 | - var last = j; | ||
| 612 | - // Match 1 or more non-path separators | ||
| 613 | - for (; j < len; ++j) { | ||
| 614 | - if (isPathSeparator(path.charCodeAt(j))) | ||
| 615 | - break; | ||
| 596 | + if (isPathSeparator(code)) { | ||
| 597 | + // Possible UNC root | ||
| 598 | + | ||
| 599 | + rootEnd = offset = 1; | ||
| 600 | + | ||
| 601 | + if (isPathSeparator(path.charCodeAt(1))) { | ||
| 602 | + // Matched double path separator at beginning | ||
| 603 | + let j = 2; | ||
| 604 | + let last = j; | ||
| 605 | + // Match 1 or more non-path separators | ||
| 606 | + while (j < len && !isPathSeparator(path.charCodeAt(j))) { | ||
| 607 | + j++; | ||
| 608 | + } | ||
| 609 | + if (j < len && j !== last) { | ||
| 610 | + // Matched! | ||
| 611 | + last = j; | ||
| 612 | + // Match 1 or more path separators | ||
| 613 | + while (j < len && isPathSeparator(path.charCodeAt(j))) { | ||
| 614 | + j++; | ||
| 616 | 615 | } | |
| 617 | 616 | if (j < len && j !== last) { | |
| 618 | 617 | // Matched! | |
| 619 | 618 | last = j; | |
| 620 | - // Match 1 or more path separators | ||
| 621 | - for (; j < len; ++j) { | ||
| 622 | - if (!isPathSeparator(path.charCodeAt(j))) | ||
| 623 | - break; | ||
| 619 | + // Match 1 or more non-path separators | ||
| 620 | + while (j < len && !isPathSeparator(path.charCodeAt(j))) { | ||
| 621 | + j++; | ||
| 624 | 622 | } | |
| 625 | - if (j < len && j !== last) { | ||
| 626 | - // Matched! | ||
| 627 | - last = j; | ||
| 628 | - // Match 1 or more non-path separators | ||
| 629 | - for (; j < len; ++j) { | ||
| 630 | - if (isPathSeparator(path.charCodeAt(j))) | ||
| 631 | - break; | ||
| 632 | - } | ||
| 633 | - if (j === len) { | ||
| 634 | - // We matched a UNC root only | ||
| 635 | - return path; | ||
| 636 | - } | ||
| 637 | - if (j !== last) { | ||
| 638 | - // We matched a UNC root with leftovers | ||
| 623 | + if (j === len) { | ||
| 624 | + // We matched a UNC root only | ||
| 625 | + return path; | ||
| 626 | + } | ||
| 627 | + if (j !== last) { | ||
| 628 | + // We matched a UNC root with leftovers | ||
| 639 | 629 | ||
| 640 | - // Offset by 1 to include the separator after the UNC root to | ||
| 641 | - // treat it as a "normal root" on top of a (UNC) root | ||
| 642 | - rootEnd = offset = j + 1; | ||
| 643 | - } | ||
| 630 | + // Offset by 1 to include the separator after the UNC root to | ||
| 631 | + // treat it as a "normal root" on top of a (UNC) root | ||
| 632 | + rootEnd = offset = j + 1; | ||
| 644 | 633 | } | |
| 645 | 634 | } | |
| 646 | 635 | } | |
| 647 | - } else if (isWindowsDeviceRoot(code)) { | ||
| 648 | - // Possible device root | ||
| 649 | - | ||
| 650 | - if (path.charCodeAt(1) === CHAR_COLON) { | ||
| 651 | - rootEnd = offset = 2; | ||
| 652 | - if (len > 2) { | ||
| 653 | - if (isPathSeparator(path.charCodeAt(2))) | ||
| 654 | - rootEnd = offset = 3; | ||
| 655 | - } | ||
| 656 | - } | ||
| 657 | 636 | } | |
| 658 | - } else if (isPathSeparator(code)) { | ||
| 659 | - // `path` contains just a path separator, exit early to avoid | ||
| 660 | - // unnecessary work | ||
| 661 | - return path; | ||
| 637 | + // Possible device root | ||
| 638 | + } else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) { | ||
| 639 | + rootEnd = len > 2 && isPathSeparator(path.charCodeAt(2)) ? 3 : 2; | ||
| 640 | + offset = rootEnd; | ||
| 662 | 641 | } | |
| 663 | 642 | ||
| 643 | + let end = -1; | ||
| 644 | + let matchedSlash = true; | ||
| 664 | 645 | for (var i = len - 1; i >= offset; --i) { | |
| 665 | 646 | if (isPathSeparator(path.charCodeAt(i))) { | |
| 666 | 647 | if (!matchedSlash) { | |
@@ -843,79 +824,71 @@ const win32 = { | |||
| 843 | 824 | var rootEnd = 0; | |
| 844 | 825 | let code = path.charCodeAt(0); | |
| 845 | 826 | ||
| 846 | - // Try to match a root | ||
| 847 | - if (len > 1) { | ||
| 827 | + if (len === 1) { | ||
| 848 | 828 | if (isPathSeparator(code)) { | |
| 849 | - // Possible UNC root | ||
| 829 | + // `path` contains just a path separator, exit early to avoid | ||
| 830 | + // unnecessary work | ||
| 831 | + ret.root = ret.dir = path; | ||
| 832 | + return ret; | ||
| 833 | + } | ||
| 834 | + return ret; | ||
| 835 | + } | ||
| 836 | + // Try to match a root | ||
| 837 | + if (isPathSeparator(code)) { | ||
| 838 | + // Possible UNC root | ||
| 850 | 839 | ||
| 851 | - rootEnd = 1; | ||
| 852 | - if (isPathSeparator(path.charCodeAt(1))) { | ||
| 853 | - // Matched double path separator at beginning | ||
| 854 | - var j = 2; | ||
| 855 | - var last = j; | ||
| 856 | - // Match 1 or more non-path separators | ||
| 857 | - for (; j < len; ++j) { | ||
| 858 | - if (isPathSeparator(path.charCodeAt(j))) | ||
| 859 | - break; | ||
| 840 | + rootEnd = 1; | ||
| 841 | + if (isPathSeparator(path.charCodeAt(1))) { | ||
| 842 | + // Matched double path separator at beginning | ||
| 843 | + let j = 2; | ||
| 844 | + let last = j; | ||
| 845 | + // Match 1 or more non-path separators | ||
| 846 | + while (j < len && !isPathSeparator(path.charCodeAt(j))) { | ||
| 847 | + j++; | ||
| 848 | + } | ||
| 849 | + if (j < len && j !== last) { | ||
| 850 | + // Matched! | ||
| 851 | + last = j; | ||
| 852 | + // Match 1 or more path separators | ||
| 853 | + while (j < len && isPathSeparator(path.charCodeAt(j))) { | ||
| 854 | + j++; | ||
| 860 | 855 | } | |
| 861 | 856 | if (j < len && j !== last) { | |
| 862 | 857 | // Matched! | |
| 863 | 858 | last = j; | |
| 864 | - // Match 1 or more path separators | ||
| 865 | - for (; j < len; ++j) { | ||
| 866 | - if (!isPathSeparator(path.charCodeAt(j))) | ||
| 867 | - break; | ||
| 859 | + // Match 1 or more non-path separators | ||
| 860 | + while (j < len && !isPathSeparator(path.charCodeAt(j))) { | ||
| 861 | + j++; | ||
| 868 | 862 | } | |
| 869 | - if (j < len && j !== last) { | ||
| 870 | - // Matched! | ||
| 871 | - last = j; | ||
| 872 | - // Match 1 or more non-path separators | ||
| 873 | - for (; j < len; ++j) { | ||
| 874 | - if (isPathSeparator(path.charCodeAt(j))) | ||
| 875 | - break; | ||
| 876 | - } | ||
| 877 | - if (j === len) { | ||
| 878 | - // We matched a UNC root only | ||
| 879 | - | ||
| 880 | - rootEnd = j; | ||
| 881 | - } else if (j !== last) { | ||
| 882 | - // We matched a UNC root with leftovers | ||
| 883 | - | ||
| 884 | - rootEnd = j + 1; | ||
| 885 | - } | ||
| 863 | + if (j === len) { | ||
| 864 | + // We matched a UNC root only | ||
| 865 | + rootEnd = j; | ||
| 866 | + } else if (j !== last) { | ||
| 867 | + // We matched a UNC root with leftovers | ||
| 868 | + rootEnd = j + 1; | ||
| 886 | 869 | } | |
| 887 | 870 | } | |
| 888 | 871 | } | |
| 889 | - } else if (isWindowsDeviceRoot(code)) { | ||
| 890 | - // Possible device root | ||
| 891 | - | ||
| 892 | - if (path.charCodeAt(1) === CHAR_COLON) { | ||
| 893 | - rootEnd = 2; | ||
| 894 | - if (len > 2) { | ||
| 895 | - if (isPathSeparator(path.charCodeAt(2))) { | ||
| 896 | - if (len === 3) { | ||
| 897 | - // `path` contains just a drive root, exit early to avoid | ||
| 898 | - // unnecessary work | ||
| 899 | - ret.root = ret.dir = path; | ||
| 900 | - return ret; | ||
| 901 | - } | ||
| 902 | - rootEnd = 3; | ||
| 903 | - } | ||
| 904 | - } else { | ||
| 905 | - // `path` contains just a drive root, exit early to avoid | ||
| 906 | - // unnecessary work | ||
| 907 | - ret.root = ret.dir = path; | ||
| 908 | - return ret; | ||
| 909 | - } | ||
| 872 | + } | ||
| 873 | + } else if (isWindowsDeviceRoot(code) && path.charCodeAt(1) === CHAR_COLON) { | ||
| 874 | + // Possible device root | ||
| 875 | + if (len <= 2) { | ||
| 876 | + // `path` contains just a drive root, exit early to avoid | ||
| 877 | + // unnecessary work | ||
| 878 | + ret.root = ret.dir = path; | ||
| 879 | + return ret; | ||
| 880 | + } | ||
| 881 | + rootEnd = 2; | ||
| 882 | + if (isPathSeparator(path.charCodeAt(2))) { | ||
| 883 | + if (len === 3) { | ||
| 884 | + // `path` contains just a drive root, exit early to avoid | ||
| 885 | + // unnecessary work | ||
| 886 | + ret.root = ret.dir = path; | ||
| 887 | + return ret; | ||
| 910 | 888 | } | |
| 889 | + rootEnd = 3; | ||
| 911 | 890 | } | |
| 912 | - } else if (isPathSeparator(code)) { | ||
| 913 | - // `path` contains just a path separator, exit early to avoid | ||
| 914 | - // unnecessary work | ||
| 915 | - ret.root = ret.dir = path; | ||
| 916 | - return ret; | ||
| 917 | 891 | } | |
| 918 | - | ||
| 919 | 892 | if (rootEnd > 0) | |
| 920 | 893 | ret.root = path.slice(0, rootEnd); | |
| 921 | 894 | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments