From 6146382676a7bff4764e86e99d0d053f5fbbc045 Mon Sep 17 00:00:00 2001 From: Richard Custodio Date: Mon, 18 Mar 2024 16:48:15 -0300 Subject: feat: add `text` macro to `widget::helpers` --- widget/src/helpers.rs | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'widget') diff --git a/widget/src/helpers.rs b/widget/src/helpers.rs index 4863e550..1b57cd21 100644 --- a/widget/src/helpers.rs +++ b/widget/src/helpers.rs @@ -51,6 +51,19 @@ macro_rules! row { ); } +/// Creates a new [`Text`] widget with the provided content. +/// +/// [`Text`]: core::widget::Text +#[macro_export] +macro_rules! text { + () => ( + $crate::Text::new() + ); + ($($arg:tt)*) => { + $crate::Text::new(format!($($arg)*)) + }; +} + /// Creates a new [`Container`] with the provided content. /// /// [`Container`]: crate::Container -- cgit From db7d8680ce198439921c8856b2d6d0ccfa4d66ff Mon Sep 17 00:00:00 2001 From: Richard Custodio Date: Mon, 18 Mar 2024 17:46:22 -0300 Subject: docs: improve `text` macro documentation --- widget/src/helpers.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'widget') diff --git a/widget/src/helpers.rs b/widget/src/helpers.rs index 1b57cd21..966d23cc 100644 --- a/widget/src/helpers.rs +++ b/widget/src/helpers.rs @@ -54,6 +54,23 @@ macro_rules! row { /// Creates a new [`Text`] widget with the provided content. /// /// [`Text`]: core::widget::Text +/// +/// This macro uses the same syntax as [`format!`], but creates a new [`Text`] widget instead. +/// +/// See [the formatting documentation in `std::fmt`](std::fmt) +/// for details of the macro argument syntax. +/// +/// # Examples +/// +/// ``` +/// fn view(&self) -> Element { +/// let empty = text!(); +/// let simple = text!("Hello, world!"); +/// let keyword = text!("Hello, {}", "world!"); +/// let planet = "Earth"; +/// let complex = text!("Hello, {planet}!"); +/// } +/// ``` #[macro_export] macro_rules! text { () => ( -- cgit From d71e78d1384c885be1ceba6e1f5c871174ca9c74 Mon Sep 17 00:00:00 2001 From: Richard Custodio Date: Mon, 18 Mar 2024 18:30:29 -0300 Subject: fix: remove empty macro usage --- widget/src/helpers.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'widget') diff --git a/widget/src/helpers.rs b/widget/src/helpers.rs index 966d23cc..5eea7cc2 100644 --- a/widget/src/helpers.rs +++ b/widget/src/helpers.rs @@ -64,18 +64,17 @@ macro_rules! row { /// /// ``` /// fn view(&self) -> Element { -/// let empty = text!(); /// let simple = text!("Hello, world!"); +/// /// let keyword = text!("Hello, {}", "world!"); +/// /// let planet = "Earth"; -/// let complex = text!("Hello, {planet}!"); +/// let local_variable = text!("Hello, {planet}!"); +/// // ... /// } /// ``` #[macro_export] macro_rules! text { - () => ( - $crate::Text::new() - ); ($($arg:tt)*) => { $crate::Text::new(format!($($arg)*)) }; -- cgit From 72ed8bcc8def9956e25f3720a3095fc96bb2eef0 Mon Sep 17 00:00:00 2001 From: Richard Custodio Date: Mon, 18 Mar 2024 20:24:42 -0300 Subject: fix: make `text` macro example pass doctest --- widget/src/helpers.rs | 35 ++++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) (limited to 'widget') diff --git a/widget/src/helpers.rs b/widget/src/helpers.rs index 5eea7cc2..b294a1d4 100644 --- a/widget/src/helpers.rs +++ b/widget/src/helpers.rs @@ -62,15 +62,32 @@ macro_rules! row { /// /// # Examples /// -/// ``` -/// fn view(&self) -> Element { -/// let simple = text!("Hello, world!"); -/// -/// let keyword = text!("Hello, {}", "world!"); -/// -/// let planet = "Earth"; -/// let local_variable = text!("Hello, {planet}!"); -/// // ... +/// ```no_run +/// # mod iced { +/// # pub struct Element(pub std::marker::PhantomData); +/// # pub mod widget { +/// # macro_rules! text { +/// # ($($arg:tt)*) => {unimplemented!()} +/// # } +/// # pub(crate) use text; +/// # } +/// # } +/// # struct Example; +/// # enum Message {} +/// use iced::Element; +/// use iced::widget::text; +/// +/// impl Example { +/// fn view(&self) -> Element { +/// let simple = text!("Hello, world!"); +/// +/// let keyword = text!("Hello, {}", "world!"); +/// +/// let planet = "Earth"; +/// let local_variable = text!("Hello, {planet}!"); +/// // ... +/// # iced::Element(std::marker::PhantomData) +/// } /// } /// ``` #[macro_export] -- cgit