joetannenbaum/chewie
最新稳定版本:0.1.11
Composer 安装命令:
composer require joetannenbaum/chewie
包简介
README 文档
README
Chewie
Chewie is a package that helps you build text-based user interfaces (TUIs) with Laravel Prompts. It helps to reduce some of the boilerplate code and adds some helpers for alignment, animation, and more.
Warning
This package is currently in active development. The API is subject to change. Documentation will also improve over time.
Installation
composer require joetannenbaum/chewie
Registering Renderers
use App\Renderers\DemoRenderer; use Chewie\Concerns\RegistersRenderers; class Demo extends Prompt { use RegistersRenderers; public function __construct() { $this->registerRenderer(DemoRenderer::class); } }
You can also tell Chewie that all of your renderers live within a specific namespace, then Chewie will resolve your renderers automatically.
For example, if you call the following in your AppServiceProvider:
use Chewie\Renderer; class AppServiceProvider { public function boot() { Renderer::setNamespace('App\\Renderers'); } }
Then you can simply do the following when registering renderers. Chewie assumes your renderer class will be your app class + Renderer:
use Chewie\Concerns\RegistersRenderers; class Demo extends Prompt { use RegistersRenderers; public function __construct() { // Will register App\Renderers\DemoRenderer $this->registerRenderer(); } }
Drawing Art
You can easily print ASCII art from a file out to the terminal in your renderer:
use Chewie\Concerns\DrawsArt; class DemoRenderer extends Renderer { use DrawsArt; public function __invoke(Demo $prompt): string { // Returns a collection of the lines from your art, // assumes a ".txt" extension $this->artLines(storage_path('my-art/horse')) ->each($this->line(...)); return $this; } }
You can also tell Chewie where all of your art files live:
use Chewie\Art; class AppServiceProvider { public function boot() { Art::setDirectory(storage_path('my-art')); } }
which allows you to simplify the artLines call to:
use Chewie\Concerns\DrawsArt; class DemoRenderer extends Renderer { use DrawsArt; public function __invoke(Demo $prompt): string { $this->artLines('horse')->each($this->line(...)); return $this; } }
Alignment
Chewie comes with methods that help align content within the terminal.
use Chewie\Concerns\Aligns; class DemoRenderer extends Renderer { use Aligns; public function __invoke(Demo $prompt): string { $width = $prompt->terminal()->cols(); $height = $prompt->terminal()->lines(); $lines = [ 'Hello!', 'My name is Joe', ]; $this->centerHorizontally($lines, $width) ->each($this->line(...)); $this->centerVertically($lines, $height) ->each($this->line(...)); $this->center($lines, $width, $height) ->each($this->line(...)); $this->line($this->spaceBetween($width, ...$lines)); $this->pinToBottom($height, function() { $this->newLine(); $this->line('This is pinned to the bottom!'); }); return $this; } }
统计信息
- 总下载量: 317.41k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 121
- 点击次数: 0
- 依赖项目数: 9
- 推荐数: 0
其他信息
- 授权协议: Unknown
- 更新时间: 2024-03-18
