Вход Регистрация
Файл: vendor/laravel/prompts/src/Themes/Default/TaskRenderer.php
Строк: 77
<?php

namespace LaravelPromptsThemesDefault;

use 
LaravelPromptsConcernsHasSpinner;
use 
LaravelPromptsTask;

class 
TaskRenderer extends Renderer
{
    use 
HasSpinner;

    
/**
     * Render the task.
     */
    
public function __invoke(Task $task): string
    
{
        
$maxWidth = $task->terminal()->cols() - 6;
        
$labelMaxWidth = $maxWidth - 3;
        
$leadPadding = str_repeat(' ', 3);
        
$stableLineMaxWidth = $maxWidth - strlen($leadPadding) - 2; // symbol + space

        
if ($task->static) {
            return 
$this->line(" {$this->cyan($this->staticFrame)} {$this->truncate($task->label, $maxWidth)}");
        }

        
$task->interval = $this->interval;

        
$stableMessages = array_slice($task->stableMessages, -$task->maxStableMessages);

        if (
$task->finished && $task->keepSummary && count($stableMessages) > 0) {
            
$this->line(" {$this->cyan('•')} {$this->truncate($task->label, $labelMaxWidth)}");

            foreach (
$stableMessages as $stableMessage) {
                
$this->line($leadPadding.$this->stableMessageSymbol($stableMessage['type']).' '.$this->truncate($stableMessage['message'], $stableLineMaxWidth));
            }

            
$this->newLine();

            return 
$this;
        }

        
$this->line(" {$this->cyan($this->spinnerFrame($task->count))} {$this->truncate($task->label, $labelMaxWidth)}");

        if (
$task->subLabel !== null && $task->subLabel !== '') {
            
$this->line($leadPadding.$this->dim($this->truncate($task->subLabel, $stableLineMaxWidth)));
        }

        foreach (
$stableMessages as $stableMessage) {
            
$this->line($leadPadding.$this->stableMessageSymbol($stableMessage['type']).' '.$this->truncate($stableMessage['message'], $stableLineMaxWidth));
        }

        if (
count($task->stableMessages) > 0 || count($task->logs) > 0) {
            
$this->line($this->gray(' '.str_repeat('─', $maxWidth)));
        } else {
            
$this->newLine();
        }

        
$logs = array_slice($task->logs, -$task->limit);

        foreach (
$logs as $log) {
            
$this->line(' '.$this->dim($log));
        }

        
$remaining = $task->limit - count($task->logs);

        while (
$remaining > 0) {
            
$this->line('');
            
$remaining--;
        }

        return 
$this;
    }

    protected function 
stableMessageSymbol(string $type): string
    
{
        return 
match ($type) {
            
'success' => $this->green('✔'),
            
'error' => $this->red('✘'),
            
'warning' => $this->yellow('⚠'),
            default => 
'',
        };
    }
}
Онлайн: 3
Реклама