use serde_json::Value;
use crate::value::is_object;
pub(crate) fn default_pattern_properties_handler(schema: Value) -> Value {
let mut schema = schema;
let Value::Object(map) = &mut schema else {
return schema;
};
let Some(addit) = map.get("additionalProperties").cloned() else {
return schema;
};
if !is_object(&addit) && !addit.is_null() {
return schema;
}
let matches_pattern = match map.get("patternProperties") {
Some(Value::Object(patterns)) => patterns.values().any(|p| *p == addit),
_ => false,
};
if matches_pattern {
map.insert("additionalProperties".to_string(), Value::Bool(false));
}
schema
}