feat: add [icon] prepend_rules and append_rules

This commit is contained in:
grig-iv 2024-02-13 00:27:25 +03:00
parent d9ca964064
commit a92787564b

View file

@ -1,7 +1,7 @@
use serde::{Deserialize, Deserializer}; use serde::{Deserialize, Deserializer};
use super::Style; use super::Style;
use crate::{theme::{Color, StyleShadow}, Pattern}; use crate::{theme::{Color, StyleShadow}, Pattern, preset::Preset};
pub struct Icon { pub struct Icon {
pub name: Pattern, pub name: Pattern,
@ -17,6 +17,10 @@ impl Icon {
#[derive(Deserialize)] #[derive(Deserialize)]
struct IconOuter { struct IconOuter {
rules: Vec<IconRule>, rules: Vec<IconRule>,
#[serde(default)]
prepend_rules: Vec<IconRule>,
#[serde(default)]
append_rules: Vec<IconRule>,
} }
#[derive(Deserialize)] #[derive(Deserialize)]
struct IconRule { struct IconRule {
@ -26,8 +30,13 @@ impl Icon {
fg: Option<Color>, fg: Option<Color>,
} }
let mut outer = IconOuter::deserialize(deserializer)?;
#[rustfmt::skip]
Preset::mix(&mut outer.rules, outer.prepend_rules, outer.append_rules);
Ok( Ok(
IconOuter::deserialize(deserializer)? outer
.rules .rules
.into_iter() .into_iter()
.map(|r| Icon { .map(|r| Icon {