| 'use strict'; |
| |
| var isRelative = require('is-relative'); |
| var isWindows = require('is-windows'); |
| |
| /** |
| * Expose `isAbsolute` |
| */ |
| |
| module.exports = isAbsolute; |
| |
| /** |
| * Returns true if a file path is absolute. |
| * |
| * @param {String} `fp` |
| * @return {Boolean} |
| */ |
| |
| function isAbsolute(fp) { |
| if (typeof fp !== 'string') { |
| throw new TypeError('isAbsolute expects a string.'); |
| } |
| return isWindows() ? isAbsolute.win32(fp) : isAbsolute.posix(fp); |
| } |
| |
| /** |
| * Test posix paths. |
| */ |
| |
| isAbsolute.posix = function posixPath(fp) { |
| return fp.charAt(0) === '/'; |
| }; |
| |
| /** |
| * Test windows paths. |
| */ |
| |
| isAbsolute.win32 = function win32(fp) { |
| if (/[a-z]/i.test(fp.charAt(0)) && fp.charAt(1) === ':' && fp.charAt(2) === '\\') { |
| return true; |
| } |
| // Microsoft Azure absolute filepath |
| if (fp.slice(0, 2) === '\\\\') { |
| return true; |
| } |
| return !isRelative(fp); |
| }; |