Skip to main content

promkit_widgets/text/
config.rs

1use promkit_core::crossterm::style::ContentStyle;
2
3#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
4#[cfg_attr(feature = "serde", serde(default))]
5#[derive(Clone, Default)]
6pub struct Config {
7    #[cfg_attr(
8        feature = "serde",
9        serde(with = "termcfg::crossterm_config::option_content_style_serde")
10    )]
11    pub style: Option<ContentStyle>,
12    pub lines: Option<usize>,
13}
14
15#[cfg(test)]
16mod tests {
17    #[cfg(feature = "serde")]
18    mod serde_compatibility {
19        use promkit_core::crossterm::style::{Attribute, Color};
20
21        use super::super::Config;
22
23        #[test]
24        fn config_fields_are_fully_loaded_from_toml() {
25            let input = r#"
26style = "fg=yellow,attr=bold"
27lines = 2
28"#;
29
30            let formatter: Config = toml::from_str(input).unwrap();
31            let style = formatter.style.unwrap();
32
33            assert_eq!(style.foreground_color, Some(Color::Yellow));
34            assert!(style.attributes.has(Attribute::Bold));
35            assert_eq!(formatter.lines, Some(2));
36        }
37    }
38}