diff options
| -rw-r--r-- | src/Assets.php | 22 | ||||
| -rw-r--r-- | src/AssetsServiceProvider.php | 14 | ||||
| -rw-r--r-- | src/Contracts/ManifestParser.php | 8 | ||||
| -rw-r--r-- | src/File.php | 8 | ||||
| -rw-r--r-- | src/JsonManifestParser.php | 13 | ||||
| -rw-r--r-- | src/Manifest.php | 51 | 
6 files changed, 116 insertions, 0 deletions
| diff --git a/src/Assets.php b/src/Assets.php new file mode 100644 index 0000000..78cbe59 --- /dev/null +++ b/src/Assets.php @@ -0,0 +1,22 @@ +<?php + +namespace Lightscale\LaralightAssets; + +class Assets +{ +    private string $manifestParser; +    private array $manifests = []; +    private array $manifestsParsers = []; +    private array $files = []; +    private array $queuedHeadFiles = []; +    private array $queuedFooterFiles = []; + +    public function registerManifest( +        string $name, +        string $path, +        string $baseUrl, +    ): void +    { + +    } +} diff --git a/src/AssetsServiceProvider.php b/src/AssetsServiceProvider.php new file mode 100644 index 0000000..c59be48 --- /dev/null +++ b/src/AssetsServiceProvider.php @@ -0,0 +1,14 @@ +<?php + +namespace Lightscale\LaralightAssets; + +use Illuminate\Support\ServiceProvider; + +class AssetsServiceProvider extends ServiceProvider +{ + +    public function register(): void +    { + +    } +} diff --git a/src/Contracts/ManifestParser.php b/src/Contracts/ManifestParser.php new file mode 100644 index 0000000..d4442aa --- /dev/null +++ b/src/Contracts/ManifestParser.php @@ -0,0 +1,8 @@ +<?php + +namespace Lightscale\LaralightAssets\Contracts; + +interface ManifestParser +{ +    public function parse(string $data): array; +} diff --git a/src/File.php b/src/File.php new file mode 100644 index 0000000..3e64938 --- /dev/null +++ b/src/File.php @@ -0,0 +1,8 @@ +<?php + +namespace Lightscale\LaralightAssets; + +class File +{ + +} diff --git a/src/JsonManifestParser.php b/src/JsonManifestParser.php new file mode 100644 index 0000000..9293af1 --- /dev/null +++ b/src/JsonManifestParser.php @@ -0,0 +1,13 @@ +<?php + +namespace Lightscale\LaralightAssets; + +use Lightscale\LaralightAssets\Contracts\ManifestParser; + +class JsonManifestParser implements ManifestParser +{ +    public function parse(string $data): array +    { +        return json_decode($data, true); +    } +} diff --git a/src/Manifest.php b/src/Manifest.php new file mode 100644 index 0000000..b7c5e96 --- /dev/null +++ b/src/Manifest.php @@ -0,0 +1,51 @@ +<?php + +namespace Lightscale\LaralightAssets; + +class Manifest +{ +    private ?array $data; + +    public function __construct( +        private string $path, +        private string $baseUrl, +        private string $parserClass = JsonManifestParser::class, +    ) {} + +    private function readFile(): string +    { +        return filegetcontents($this->path); +    } + +    private function loadData(): void +    { +        $data = $this->readFile(); +        $parser = new $this->parserClass; +        $this->data = $parser->parse($data); +    } + +    private function getData(): array +    { +        if ($this->data === null) $this->loadData(); +        return $this->data; +    } + +    public function getFile(string $file): ?string +    { +        return $this->getData()[$file] ?? null; +    } + +    public function getUrl(string $file): ?string +    { +        $file = $this->getFile($file); +        return $file === null ? null : "{$this->baseUrl}/{$file}"; +    } + +    public function getPath(string $file): ?string +    { +        $file = $this->getFile($file); +        $dir = $this->getDir(); +        return $file === null ? null : "{$dir}/{$file}"; +    } + +} | 
