v0.22.0
https://github.com/ratatui/ratatui/releases/tag/v0.22.0
プレリュード
これで、 prelude
モジュールができました!これにより、ライブラリのユーザーは、膨大な量のインポートなしで ratatui
を簡単に使用できます。
use ratatui::prelude::*;
ライブラリで使用されている主なタイプは別として、この prelude
はいくつかのモジュールを再輸出して、そうでなければ衝突するタイプを簡単に修飾できるようにします。例えば:
use ratatui::{prelude::*, widgets::*};
#[derive(Debug, Default, PartialEq, Eq)]struct Line;
assert_eq!(Line::default(), Line);assert_eq!(text::Line::default(), ratatui::text::Line::from(vec![]));
New widget: Scrollbar
任意の Rect
で使用できるスクロールバー ウィジェットが追加されました。さまざまなスタイルやシンボルでカスタマイズすることもできます。
Scrollbar
のコンポーネントは次のとおりです。
<--▮------->^ ^ ^ ^│ │ │ └ end│ │ └──── track│ └──────── thumb└─────────── begin
これを使用するには、ScrollbarState
とともにステートフル ウィジェットとしてレンダリングします。
frame.render_stateful_widget( Scrollbar::default() .orientation(ScrollbarOrientation::VerticalRight) .begin_symbol(Some("↑")) .end_symbol(Some("↓")), rect, &mut scrollbar_state,);
結果は次のようになります:
┌scrollbar──────────────────↑│This is a longer line ║│Veeeeeeeeeeeeeeeery looo█│This is a line ║└───────────────────────────↓
Block: 複数のタイトルをサポート
Block
ウィジェットは、Title
ウィジェットを介して複数のタイトルを持つことをサポートするようになりました。
各タイトルは、同じ位置または配置にあるタイトルを区切る 1 つのスペースでレンダリングされます。中央揃えのタイトルと中央揃えでないタイトルの両方がレンダリングされる場合、中央揃えのスペースは、残りの幅ではなく、ブロックの全幅に基づいて計算されます。
タイトルとして、文字列、文字列スライス、借用文字列 (Cow<str>
)、スパン、またはスパンのベクトル (Vec<Span>
) など、さまざまなタイプを提供できます。
次のように使用できます。
Block::default() .borders(Borders::ALL) .title("Title") // By default in the top right corner .title(Title::from("Left").alignment(Alignment::Left)) .title(Title::from("Center").alignment(Alignment::Center)) .title(Title::from("Bottom").position(Position::Bottom)) .title( Title::from("Bottom center") .alignment(Alignment::Center) .position(Position::Bottom), );
結果:
┌Title─Left──Center─────────────┐│ ││ ││ │└Bottom───Bottom center─────────┘
Barchart: support groups
Barchart
は、異なるデータ セットから複数のバーを追加できるように改善されました。これは、新しく追加された Bar
および BarGroup
オブジェクトを使用して実行できます。
詳細と実装の詳細については、barchart の例 を参照してください。
Stylization shorthands
str
、Span
、Paragraph
のスタイル ショートハンドを使用できます。
冗長な例は次のとおりです。
"hello" .on_black() .black() .bold() .underline() .dimmed() .slow_blink() .crossed_out() .reversed()
これは特に簡潔なスタイル設定に役立ちます:
assert_eq!( "hello".red().on_blue().bold(), Span::styled("hello", Style::default().fg(Color::Red).bg(Color::Blue).add_modifier(Modifier::BOLD)))
Stylize everything
すべてのウィジェットにスタイルを設定できるようになりました (つまり set_style
)
Styled
trait は、以下を含む残りのすべてのウィジェットに実装されています。
Barchart
Chart
(includingAxis
andDataset
)Gauge
andLineGauge
List
andListItem
Sparkline
Table
,Row
, andCell
Tabs
Style
Constant styles
Style
は次のように const
コンテキストで構築できます。
const DEFAULT_MODIFIER: Modifier = Modifier::BOLD.union(Modifier::ITALIC);const EMPTY: Modifier = Modifier::empty();
const DEFAULT_STYLE: Style = Style::with(DEFAULT_MODIFIER, EMPTY) .fg(Color::Red) .bg(Color::Black);
More colors formats
Color::from_str
を介して、light-red
のようなハイフンで区切られた色名を解析できるようになりました。
さらに、ANSI カラー テーブル のすべての色がサポートされています (ただし、一部の名前はまったく同じではありません)。
gray
はwhite
と呼ばれることがあります - これはサポートされていません。明るい白にはwhite
を使用しますgray
はsilver
と呼ばれることがあります - これはサポートされていますdarkgray
はlight black
またはbright black
と呼ばれることがあります (どちらもサポートされています)white
はlight white
またはbright white
と呼ばれることがあります (どちらもサポートされています)- すべての色に対して
bright
およびlight
プレフィックスをサポートしています - すべての色に対して
"-"
、"_"
、および" "
を区切り文字としてサポートしています gray
とgrey
の両方のスペルをサポートしています
例えば:
use ratatui::style::Color;use std::str::FromStr;
assert_eq!(Color::from_str("red"), Ok(Color::Red));assert_eq!("red".parse(), Ok(Color::Red));assert_eq!("lightred".parse(), Ok(Color::LightRed));assert_eq!("light red".parse(), Ok(Color::LightRed));assert_eq!("light-red".parse(), Ok(Color::LightRed));assert_eq!("light_red".parse(), Ok(Color::LightRed));assert_eq!("lightRed".parse(), Ok(Color::LightRed));assert_eq!("bright red".parse(), Ok(Color::LightRed));assert_eq!("bright-red".parse(), Ok(Color::LightRed));assert_eq!("silver".parse(), Ok(Color::Gray));assert_eq!("dark-grey".parse(), Ok(Color::DarkGray));assert_eq!("dark gray".parse(), Ok(Color::DarkGray));assert_eq!("light-black".parse(), Ok(Color::DarkGray));assert_eq!("white".parse(), Ok(Color::White));assert_eq!("bright white".parse(), Ok(Color::White));
Integrations
次のツールがリポジトリに統合されました:
cargo-husky
: git pre-push hooksbacon
: background code checks / coveragecommitizen
: conventional commitscargo-deny
: linting dependenciestypos
: spell checker
Other
Paragraph
ウィジェットのベンチマークを追加crossterm
バックエンドに下線色のサポートを追加Block
、Layout
、Rect
の低レベル関数の一部をconst
としてマーク- プロジェクト ライセンスが更新され、
ratatui
開発者への感謝が表されました