summaryrefslogtreecommitdiff
path: root/src/FileString.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/FileString.php')
-rw-r--r--src/FileString.php42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/FileString.php b/src/FileString.php
new file mode 100644
index 0000000..0bdca09
--- /dev/null
+++ b/src/FileString.php
@@ -0,0 +1,42 @@
+<?php
+
+namespace Lightscale\LaralightAssets;
+
+use Illuminate\Support\Str;
+use Illuminate\Support\Collection;
+
+class FileString
+{
+ public ?string $manifestName = null;
+ public string $fileUri;
+
+
+ public function __construct(string $file)
+ {
+ $escape = '\\';
+ $seperator = '::';
+ $seperatorLen = strlen($seperator);
+
+ $pos = 0;
+ while(
+ $pos !== false
+ ) {
+ $pos = strpos($file, $seperator, $pos);
+ if ($pos > 0 && $file[$pos - 1] === $escape) {
+ $pos += $seperatorLen;
+ }
+ else break;
+ }
+
+
+ $unescape = fn($v) => str_replace($escape . $seperator, $seperator, $v);
+
+ if ($pos === false) {
+ $this->fileUri = $unescape($file);
+ }
+ else {
+ $this->manifestName = $unescape(substr($file, 0, $pos));
+ $this->fileUri = $unescape(substr($file, $pos + $seperatorLen));
+ }
+ }
+}