use crate::field_info::{FieldInfo, FieldType};
use crate::value_map::{parse_comma_list, ConfigValue, ValueMap};
pub fn load_defaults(fields: &[FieldInfo]) -> ValueMap {
let mut map = ValueMap::new();
for field in fields {
let key = field.config_name.to_string();
match &field.field_type {
FieldType::Struct(sub_fields) => {
let nested = load_defaults(sub_fields);
if !nested.is_empty() {
map.insert(key, ConfigValue::Nested(nested));
}
}
FieldType::List => {
if let Some(default_str) = field.default_value {
map.insert(key, ConfigValue::List(parse_comma_list(default_str)));
}
}
FieldType::Bool | FieldType::Scalar => {
if let Some(default_str) = field.default_value {
map.insert(key, ConfigValue::Scalar(default_str.to_string()));
}
}
}
}
map
}