use std::collections::BTreeMap;
use crate::metadata::paths::{normalize_checks, normalize_metadata_path};
use super::super::{ConfigMetadata, FieldMetadata};
impl ConfigMetadata {
pub(super) fn normalize(&mut self) {
let mut merged = BTreeMap::<String, FieldMetadata>::new();
for mut field in self.fields.drain(..) {
field.path = normalize_metadata_path(&field.path);
field.aliases = field
.aliases
.into_iter()
.map(|alias| normalize_metadata_path(&alias))
.filter(|alias| alias != &field.path)
.collect();
field.aliases.sort();
field.aliases.dedup();
match merged.get_mut(&field.path) {
Some(existing) => existing.merge_from(field),
None => {
merged.insert(field.path.clone(), field);
}
}
}
self.fields = merged.into_values().collect();
self.checks = normalize_checks(self.checks.drain(..));
}
}