Skip to content

Commit

Permalink
refacotred names
Browse files Browse the repository at this point in the history
  • Loading branch information
tjodalv committed Mar 20, 2024
1 parent bd61309 commit 50366e4
Show file tree
Hide file tree
Showing 7 changed files with 106 additions and 68 deletions.
44 changes: 0 additions & 44 deletions src/BladeAnchor.php

This file was deleted.

4 changes: 2 additions & 2 deletions src/BladeAnchorServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
namespace Kanuni\LaravelBladeAnchor;

use Kanuni\LaravelBladeAnchor\Blade\ExtendBlade;
use Kanuni\LaravelBladeAnchor\Commands\MakeAnchorExtenderCommand;
use Spatie\LaravelPackageTools\Package;
use Spatie\LaravelPackageTools\PackageServiceProvider;
use Kanuni\LaravelBladeAnchor\Commands\MakeBladeExtenderCommand;

class BladeAnchorServiceProvider extends PackageServiceProvider
{
Expand All @@ -18,7 +18,7 @@ public function configurePackage(Package $package): void
*/
$package
->name('laravel-blade-anchor')
->hasCommand(MakeBladeExtenderCommand::class);
->hasCommand(MakeAnchorExtenderCommand::class);
}

public function bootingPackage()
Expand Down
78 changes: 78 additions & 0 deletions src/BladeAnchorsManager.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
<?php

namespace Kanuni\LaravelBladeAnchor;

use Illuminate\Support\Facades\View;
use Kanuni\LaravelBladeAnchor\Contracts\AnchorExtender;

class BladeAnchorsManager
{
private static array $extenders = [];

/**
* Register anchor extender class on specified anchor
*
* @param string $view
* @param string $anchor
* @param string $extenderClass
* @return boolean
*/
public function registerExtender(string $view, string $anchor, string $extenderClass): bool
{
if (! View::exists($view)) return false;
if (! class_exists($extenderClass)) return false;
if (! in_array(AnchorExtender::class, class_implements($extenderClass))) return false;

$anchorPath = $this->getExtendersPath($view, $anchor);

if (array_key_exists($anchorPath, static::$extenders)) {
// Push extender to extenders array
static::$extenders[$anchorPath][] = $extenderClass;
} else {
// Create new array for the path and add extender to it
static::$extenders[$anchorPath] = [$extenderClass];
}

return true;
}

/**
* Get all registered extenders for specified anchor.
*
* @param string $view
* @param string $anchor
* @return array
*/
public function getExtenders(string $view, string $anchor): array
{
$path = $this->getExtendersPath($view, $anchor);

return array_key_exists($path, static::$extenders)
? static::$extenders[$path]
: [];
}

/**
* Check if specified anchor has registered extenders
*
* @param string $view
* @param string $anchor
* @return boolean
*/
public function hasExtenders(string $view, string $anchor): bool
{
return count($this->getExtenders($view, $anchor)) > 0;
}

/**
* Returns string path for specified anchor to be used in extenders registry
*
* @param string $view
* @param string $anchor
* @return string
*/
protected function getExtendersPath(string $view, string $anchor): string
{
return "$view#$anchor";
}
}
22 changes: 22 additions & 0 deletions src/Commands/MakeAnchorExtenderCommand.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<?php

namespace Kanuni\LaravelBladeAnchor\Commands;

use Illuminate\Console\GeneratorCommand;

class MakeAnchorExtenderCommand extends GeneratorCommand
{
public $signature = 'make:anchor-extender {name}';

public $description = 'Create a new extender class that can be attached to anchor defined in laravel blade template.';

public function getStub(): string
{
return __DIR__ . '../../stubs/anchor-extender.stub';
}

public function getDefaultNamespace($rootNamespace)
{
return $rootNamespace . '\BladeExtenders';
}
}
19 changes: 0 additions & 19 deletions src/Commands/MakeBladeExtenderCommand.php

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@
namespace Kanuni\LaravelBladeAnchor\Contracts;

use Illuminate\Contracts\Support\Htmlable;
use Illuminate\Contracts\Support\Renderable;

interface Extender
interface AnchorExtender
{
public function __invoke(?array $variables): string|Htmlable;
public function __invoke(?array $variables): string|Htmlable|Renderable|null;
}
2 changes: 1 addition & 1 deletion src/Facades/LaravelBladeAnchor.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@ class LaravelBladeAnchor extends Facade
{
protected static function getFacadeAccessor()
{
return \Kanuni\LaravelBladeAnchor\BladeAnchor::class;
return \Kanuni\LaravelBladeAnchor\BladeAnchorsManager::class;
}
}

0 comments on commit 50366e4

Please sign in to comment.