diff options
Diffstat (limited to 'vendor/scssphp/scssphp/src/Util/Path.php')
-rw-r--r-- | vendor/scssphp/scssphp/src/Util/Path.php | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/vendor/scssphp/scssphp/src/Util/Path.php b/vendor/scssphp/scssphp/src/Util/Path.php new file mode 100644 index 000000000..f399e41ab --- /dev/null +++ b/vendor/scssphp/scssphp/src/Util/Path.php @@ -0,0 +1,77 @@ +<?php + +namespace ScssPhp\ScssPhp\Util; + +/** + * @internal + */ +class Path +{ + /** + * @param string $path + * + * @return bool + */ + public static function isAbsolute($path) + { + if ($path === '') { + return false; + } + + if ($path[0] === '/') { + return true; + } + + if (\DIRECTORY_SEPARATOR !== '\\') { + return false; + } + + if ($path[0] === '\\') { + return true; + } + + if (\strlen($path) < 3) { + return false; + } + + if ($path[1] !== ':') { + return false; + } + + if ($path[2] !== '/' && $path[2] !== '\\') { + return false; + } + + if (!preg_match('/^[A-Za-z]$/', $path[0])) { + return false; + } + + return true; + } + + /** + * @param string $part1 + * @param string $part2 + * + * @return string + */ + public static function join($part1, $part2) + { + if ($part1 === '' || self::isAbsolute($part2)) { + return $part2; + } + + if ($part2 === '') { + return $part1; + } + + $last = $part1[\strlen($part1) - 1]; + $separator = \DIRECTORY_SEPARATOR; + + if ($last === '/' || $last === \DIRECTORY_SEPARATOR) { + $separator = ''; + } + + return $part1 . $separator . $part2; + } +} |