mirror of
https://github.com/ratatui/ratatui.git
synced 2025-10-01 06:51:53 +00:00
feat(no_std): make ratatui-macros
no-std (#1865)
This commit is contained in:
parent
7d84d42103
commit
b32f78195b
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@ -144,9 +144,11 @@ jobs:
|
|||||||
# This makes it easier to debug the exact versions of the dependencies
|
# This makes it easier to debug the exact versions of the dependencies
|
||||||
- run: cargo tree --target x86_64-unknown-none -p ratatui-core
|
- run: cargo tree --target x86_64-unknown-none -p ratatui-core
|
||||||
- run: cargo tree --target x86_64-unknown-none -p ratatui-widgets
|
- run: cargo tree --target x86_64-unknown-none -p ratatui-widgets
|
||||||
|
- run: cargo tree --target x86_64-unknown-none -p ratatui-macros
|
||||||
- run: cargo tree --target x86_64-unknown-none -p ratatui --no-default-features
|
- run: cargo tree --target x86_64-unknown-none -p ratatui --no-default-features
|
||||||
- run: cargo build --target x86_64-unknown-none -p ratatui-core
|
- run: cargo build --target x86_64-unknown-none -p ratatui-core
|
||||||
- run: cargo build --target x86_64-unknown-none -p ratatui-widgets
|
- run: cargo build --target x86_64-unknown-none -p ratatui-widgets
|
||||||
|
- run: cargo build --target x86_64-unknown-none -p ratatui-macros
|
||||||
- run: cargo build --target x86_64-unknown-none -p ratatui --no-default-features
|
- run: cargo build --target x86_64-unknown-none -p ratatui --no-default-features
|
||||||
|
|
||||||
# Check if README.md is up-to-date with the crate's documentation.
|
# Check if README.md is up-to-date with the crate's documentation.
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
#![no_std]
|
||||||
//! `ratatui-macros` is a Rust crate that provides easy-to-use macros for simplifying boilerplate
|
//! `ratatui-macros` is a Rust crate that provides easy-to-use macros for simplifying boilerplate
|
||||||
//! associated with creating UI using [Ratatui].
|
//! associated with creating UI using [Ratatui].
|
||||||
//!
|
//!
|
||||||
@ -197,6 +198,12 @@
|
|||||||
//! [CI Status]: https://github.com/ratatui/ratatui/actions
|
//! [CI Status]: https://github.com/ratatui/ratatui/actions
|
||||||
//! [Ratatui]: https://github.com/ratatui/ratatui
|
//! [Ratatui]: https://github.com/ratatui/ratatui
|
||||||
//! [Layout concepts]: https://ratatui.rs/concepts/layout
|
//! [Layout concepts]: https://ratatui.rs/concepts/layout
|
||||||
|
|
||||||
|
extern crate alloc;
|
||||||
|
|
||||||
|
#[doc(hidden)]
|
||||||
|
pub use alloc::{format, vec};
|
||||||
|
|
||||||
mod layout;
|
mod layout;
|
||||||
mod line;
|
mod line;
|
||||||
mod row;
|
mod row;
|
||||||
|
@ -33,16 +33,17 @@
|
|||||||
/// [`span!`]: crate::span
|
/// [`span!`]: crate::span
|
||||||
/// [`Line`]: ratatui_core::text::Line
|
/// [`Line`]: ratatui_core::text::Line
|
||||||
/// [`Span`]: ratatui_core::text::Span
|
/// [`Span`]: ratatui_core::text::Span
|
||||||
|
/// [`vec!`]: alloc::vec!
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! line {
|
macro_rules! line {
|
||||||
() => {
|
() => {
|
||||||
$crate::ratatui_core::text::Line::default()
|
$crate::ratatui_core::text::Line::default()
|
||||||
};
|
};
|
||||||
($span:expr; $n:expr) => {
|
($span:expr; $n:expr) => {
|
||||||
$crate::ratatui_core::text::Line::from(vec![$span.into(); $n])
|
$crate::ratatui_core::text::Line::from($crate::vec![$span.into(); $n])
|
||||||
};
|
};
|
||||||
($($span:expr),+ $(,)?) => {{
|
($($span:expr),+ $(,)?) => {{
|
||||||
$crate::ratatui_core::text::Line::from(vec![
|
$crate::ratatui_core::text::Line::from($crate::vec![
|
||||||
$(
|
$(
|
||||||
$span.into(),
|
$span.into(),
|
||||||
)+
|
)+
|
||||||
@ -52,6 +53,7 @@ macro_rules! line {
|
|||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
use alloc::vec;
|
||||||
use ratatui_core::text::{Line, Span};
|
use ratatui_core::text::{Line, Span};
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -46,16 +46,17 @@
|
|||||||
/// [`row!`]: crate::row
|
/// [`row!`]: crate::row
|
||||||
/// [`Row`]: ratatui_widgets::table::Row
|
/// [`Row`]: ratatui_widgets::table::Row
|
||||||
/// [`Cell`]: ratatui_widgets::table::Cell
|
/// [`Cell`]: ratatui_widgets::table::Cell
|
||||||
|
/// [`vec!`]: alloc::vec!
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! row {
|
macro_rules! row {
|
||||||
() => {
|
() => {
|
||||||
::ratatui_widgets::table::Row::default()
|
::ratatui_widgets::table::Row::default()
|
||||||
};
|
};
|
||||||
($cell:expr; $n:expr) => {
|
($cell:expr; $n:expr) => {
|
||||||
::ratatui_widgets::table::Row::new(vec![::ratatui_widgets::table::Cell::from($cell); $n])
|
::ratatui_widgets::table::Row::new($crate::vec![::ratatui_widgets::table::Cell::from($cell); $n])
|
||||||
};
|
};
|
||||||
($($cell:expr),+ $(,)?) => {{
|
($($cell:expr),+ $(,)?) => {{
|
||||||
::ratatui_widgets::table::Row::new(vec![
|
::ratatui_widgets::table::Row::new($crate::vec![
|
||||||
$(
|
$(
|
||||||
::ratatui_widgets::table::Cell::from($cell),
|
::ratatui_widgets::table::Cell::from($cell),
|
||||||
)+
|
)+
|
||||||
@ -65,7 +66,7 @@ macro_rules! row {
|
|||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
use alloc::vec;
|
||||||
use ratatui_core::text::Text;
|
use ratatui_core::text::Text;
|
||||||
use ratatui_widgets::table::{Cell, Row};
|
use ratatui_widgets::table::{Cell, Row};
|
||||||
|
|
||||||
|
@ -91,28 +91,29 @@
|
|||||||
/// [`Color`]: ratatui_core::style::Color
|
/// [`Color`]: ratatui_core::style::Color
|
||||||
/// [`Span`]: ratatui_core::text::Span
|
/// [`Span`]: ratatui_core::text::Span
|
||||||
/// [`Style`]: ratatui_core::style::Style
|
/// [`Style`]: ratatui_core::style::Style
|
||||||
|
/// [`format!`]: alloc::format!
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! span {
|
macro_rules! span {
|
||||||
($string:literal) => {
|
($string:literal) => {
|
||||||
$crate::ratatui_core::text::Span::raw(format!($string))
|
$crate::ratatui_core::text::Span::raw($crate::format!($string))
|
||||||
};
|
};
|
||||||
($string:literal, $($arg:tt)*) => {
|
($string:literal, $($arg:tt)*) => {
|
||||||
$crate::ratatui_core::text::Span::raw(format!($string, $($arg)*))
|
$crate::ratatui_core::text::Span::raw($crate::format!($string, $($arg)*))
|
||||||
};
|
};
|
||||||
($expr:expr) => {
|
($expr:expr) => {
|
||||||
$crate::ratatui_core::text::Span::raw(format!("{}", $expr))
|
$crate::ratatui_core::text::Span::raw($crate::format!("{}", $expr))
|
||||||
};
|
};
|
||||||
($style:expr, $($arg:tt)*) => {
|
($style:expr, $($arg:tt)*) => {
|
||||||
compile_error!("first parameter must be a formatting specifier followed by a comma OR a `Style` followed by a semicolon")
|
compile_error!("first parameter must be a formatting specifier followed by a comma OR a `Style` followed by a semicolon")
|
||||||
};
|
};
|
||||||
($style:expr; $string:literal) => {
|
($style:expr; $string:literal) => {
|
||||||
$crate::ratatui_core::text::Span::styled(format!($string), $style)
|
$crate::ratatui_core::text::Span::styled($crate::format!($string), $style)
|
||||||
};
|
};
|
||||||
($style:expr; $string:literal, $($arg:tt)*) => {
|
($style:expr; $string:literal, $($arg:tt)*) => {
|
||||||
$crate::ratatui_core::text::Span::styled(format!($string, $($arg)*), $style)
|
$crate::ratatui_core::text::Span::styled($crate::format!($string, $($arg)*), $style)
|
||||||
};
|
};
|
||||||
($style:expr; $expr:expr) => {
|
($style:expr; $expr:expr) => {
|
||||||
$crate::ratatui_core::text::Span::styled(format!("{}", $expr), $style)
|
$crate::ratatui_core::text::Span::styled($crate::format!("{}", $expr), $style)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -35,16 +35,17 @@
|
|||||||
/// [`Text`]: ratatui_core::text::Text
|
/// [`Text`]: ratatui_core::text::Text
|
||||||
/// [`Line`]: ratatui_core::text::Line
|
/// [`Line`]: ratatui_core::text::Line
|
||||||
/// [`Span`]: ratatui_core::text::Span
|
/// [`Span`]: ratatui_core::text::Span
|
||||||
|
/// [`vec!`]: alloc::vec!
|
||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! text {
|
macro_rules! text {
|
||||||
() => {
|
() => {
|
||||||
$crate::ratatui_core::text::Text::default()
|
$crate::ratatui_core::text::Text::default()
|
||||||
};
|
};
|
||||||
($line:expr; $n:expr) => {
|
($line:expr; $n:expr) => {
|
||||||
$crate::ratatui_core::text::Text::from(vec![$line.into(); $n])
|
$crate::ratatui_core::text::Text::from($crate::vec![$line.into(); $n])
|
||||||
};
|
};
|
||||||
($($line:expr),+ $(,)?) => {{
|
($($line:expr),+ $(,)?) => {{
|
||||||
$crate::ratatui_core::text::Text::from(vec![
|
$crate::ratatui_core::text::Text::from($crate::vec![
|
||||||
$(
|
$(
|
||||||
$line.into(),
|
$line.into(),
|
||||||
)+
|
)+
|
||||||
@ -54,6 +55,7 @@ macro_rules! text {
|
|||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
|
use alloc::vec;
|
||||||
use ratatui_core::text::Text;
|
use ratatui_core::text::Text;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user