use crate::files::common::Properties;
use std::collections::HashMap;
#[derive(Debug, PartialEq, Clone, Default)]
pub struct CustomControlProperties {
pub property_store: HashMap<String, String>,
}
impl serde::Serialize for CustomControlProperties {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: serde::Serializer,
{
use serde::ser::SerializeStruct;
let mut state = serializer.serialize_struct("CustomControlProperties", 1)?;
let sorted_properties: std::collections::BTreeMap<_, _> =
self.property_store.iter().collect();
state.serialize_field("property_store", &sorted_properties)?;
state.end()
}
}
impl From<Properties> for CustomControlProperties {
fn from(prop: Properties) -> Self {
let mut custom_prop = CustomControlProperties::default();
for (key, value) in &prop {
custom_prop
.property_store
.insert(key.clone(), value.clone());
}
custom_prop
}
}
impl CustomControlProperties {
#[must_use]
pub fn len(&self) -> usize {
self.property_store.len()
}
#[must_use]
pub fn is_empty(&self) -> bool {
self.property_store.is_empty()
}
}