peace_fmt/lib.rs
1//! Presentation and formatting support for the peace automation framework.
2//!
3//! See [Output Presentation].
4//!
5//! [Output Presentation]: https://peace.mk/book/technical_concepts/output/presentation.html
6
7// Re-exports
8pub use async_trait::async_trait;
9
10pub use crate::{
11 either::Either, presentable::Presentable, presentable_ext::PresentableExt, presenter::Presenter,
12};
13
14pub mod presentable;
15
16mod either;
17mod presentable_ext;
18mod presenter;
19
20/// Ergonomically present multiple [`Presentable`]s.
21///
22/// # Examples
23///
24/// ```rust,ignore
25/// use peace_fmt::{present, Presentable};
26///
27/// present!(output, "a str", item, "\n");
28/// ```
29#[macro_export]
30macro_rules! present {
31 ($output:ident, [$($p:expr),+]) => {
32 $($output.present($p).await?;)+
33 };
34}
35
36/// Ergonomically present multiple [`Presentable`]s.
37///
38/// # Examples
39///
40/// ```rust,ignore
41/// use peace_fmt::{present, Presentable};
42///
43/// presentln!(output, "a str", item, "\n");
44/// ```
45#[macro_export]
46macro_rules! presentln {
47 ($output:ident, [$($p:expr),+]) => {
48 $($output.present($p).await?;)+
49 $output.present("\n").await?;
50 };
51}