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 は、以下を含む残りのすべてのウィジェットに実装されています。
BarchartChart(includingAxisandDataset)GaugeandLineGaugeListandListItemSparklineTable,Row, andCellTabsStyle
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開発者への感謝が表されました