aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/scssphp/scssphp/src/Util/Path.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/scssphp/scssphp/src/Util/Path.php')
-rw-r--r--vendor/scssphp/scssphp/src/Util/Path.php77
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;
+ }
+}