Skip to content

Commit 2e7ae69

Browse files
committed
add blade feature
1 parent 4f5aef5 commit 2e7ae69

File tree

3 files changed

+44
-0
lines changed

3 files changed

+44
-0
lines changed

composer.json

+7
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,13 @@
5757
"phpstan/extension-installer": true
5858
}
5959
},
60+
"extra": {
61+
"laravel": {
62+
"providers": [
63+
"DefStudio\\EnumFeatures\\ServiceProvider"
64+
]
65+
}
66+
},
6067
"minimum-stability": "dev",
6168
"prefer-stable": true
6269
}

src/Exceptions/FeatureException.php

+7
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,11 @@ public static function notEnabled(UnitEnum $feature): FeatureException
1414

1515
return new self("Feature [$name] is not enabled");
1616
}
17+
18+
public static function invalid_feature_enum(UnitEnum $feature): FeatureException
19+
{
20+
$name = $feature instanceof BackedEnum ? $feature->value : $feature->name;
21+
22+
return new self("Enum [$name] does not use DefineFeatures trait");
23+
}
1724
}

src/ServiceProvider.php

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
namespace DefStudio\EnumFeatures;
4+
5+
use DefStudio\EnumFeatures\Concerns\DefinesFeatures;
6+
use DefStudio\EnumFeatures\Exceptions\FeatureException;
7+
use Illuminate\Support\Facades\Blade;
8+
use Spatie\LaravelPackageTools\Package;
9+
use Spatie\LaravelPackageTools\PackageServiceProvider;
10+
use UnitEnum;
11+
12+
class ServiceProvider extends PackageServiceProvider
13+
{
14+
public function configurePackage(Package $package): void
15+
{
16+
$package->name('enum-features');
17+
}
18+
19+
public function packageBooted(): void
20+
{
21+
Blade::if('feature', function (UnitEnum $feature) {
22+
if (! class_uses($feature, DefinesFeatures::class)) {
23+
throw FeatureException::invalid_feature_enum($feature);
24+
}
25+
26+
/** @var DefinesFeatures $feature */
27+
return $feature->enabled();
28+
});
29+
}
30+
}

0 commit comments

Comments
 (0)