refactor: susun semula struktur folder — Laravel source ke src/

This commit is contained in:
Saufi
2026-05-19 15:58:35 +08:00
parent f052251b94
commit bf53c71b45
10806 changed files with 1385379 additions and 121 deletions

94
vendor/league/csv/src/EnumFormatter.php vendored Normal file
View File

@@ -0,0 +1,94 @@
<?php
/**
* League.Csv (https://csv.thephpleague.com)
*
* (c) Ignace Nyamagana Butera <nyamsprod@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
declare(strict_types=1);
namespace League\Csv;
use BackedEnum;
use Closure;
use JsonSerializable;
use TypeError;
use UnitEnum;
/**
* Formatting strategies (exclusive):
* - Name (UnitEnum::name)
* - Value (BackedEnum::value)
* - JSON (JsonSerializable)
* - callback
*/
final class EnumFormatter
{
private const NAME_FORMAT = 'name';
private const VALUE_FORMAT = 'value';
private const JSON_FORMAT = 'json';
private const CALLBACK_FORMAT = 'callback';
private function __construct(
private readonly string $format,
private readonly ?Closure $callback
){
}
public static function usingName(): self
{
return new self(self::NAME_FORMAT, null);
}
public static function usingValue(): self
{
return new self(self::VALUE_FORMAT, null);
}
public static function usingJson(): self
{
return new self(self::JSON_FORMAT, null);
}
/**
* Register a callback that will convert the UnitEnum in a representation suitable
* to be used by PHP's fputcsv and fwrite functions without emitting errors
*
* @param callable(UnitEnum): mixed $callback
*/
public static function usingCallback(callable $callback): self
{
return new self(self::CALLBACK_FORMAT, $callback instanceof Closure ? $callback : $callback(...));
}
/**
* Enable using the class as a formatter for the {@link Writer}.
*
* @throws TypeError if encoding is invalid
*/
public function __invoke(array $record): array
{
return array_map(fn (mixed $value) => !$value instanceof UnitEnum ? $value : $this->encode($value), $record);
}
/**
* Encodes the UnitEnum in a representation suitable to be used
* by PHP's fputcsv and fwrite functions without emitting errors
*
* @throws TypeError If the encoding does not work
*/
public function encode(UnitEnum $value): mixed
{
return match (true) {
self::NAME_FORMAT === $this->format => $value->name,
self::VALUE_FORMAT === $this->format && $value instanceof BackedEnum => $value->value,
self::JSON_FORMAT === $this->format && $value instanceof JsonSerializable => $value->jsonSerialize(),
self::CALLBACK_FORMAT === $this->format && null !== $this->callback => ($this->callback)($value),
default => throw new TypeError('The Enum `'.$value::class.'` cannot be encoded using the "'.$this->format.'" strategy.'),
};
}
}