first commit
This commit is contained in:
59
vendor/laravel/prompts/src/FormStep.php
vendored
Normal file
59
vendor/laravel/prompts/src/FormStep.php
vendored
Normal file
@ -0,0 +1,59 @@
|
||||
<?php
|
||||
|
||||
namespace Laravel\Prompts;
|
||||
|
||||
use Closure;
|
||||
|
||||
class FormStep
|
||||
{
|
||||
protected readonly Closure $condition;
|
||||
|
||||
public function __construct(
|
||||
protected readonly Closure $step,
|
||||
bool|Closure $condition,
|
||||
public readonly ?string $name,
|
||||
protected readonly bool $ignoreWhenReverting,
|
||||
) {
|
||||
$this->condition = is_bool($condition)
|
||||
? fn () => $condition
|
||||
: $condition;
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute this step.
|
||||
*
|
||||
* @param array<mixed> $responses
|
||||
*/
|
||||
public function run(array $responses, mixed $previousResponse): mixed
|
||||
{
|
||||
if (! $this->shouldRun($responses)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return ($this->step)($responses, $previousResponse);
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether the step should run based on the given condition.
|
||||
*
|
||||
* @param array<mixed> $responses
|
||||
*/
|
||||
protected function shouldRun(array $responses): bool
|
||||
{
|
||||
return ($this->condition)($responses);
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether this step should be skipped over when a subsequent step is reverted.
|
||||
*
|
||||
* @param array<mixed> $responses
|
||||
*/
|
||||
public function shouldIgnoreWhenReverting(array $responses): bool
|
||||
{
|
||||
if (! $this->shouldRun($responses)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return $this->ignoreWhenReverting;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user