validator now uses hybrid uuid and numeric index pathing

This commit is contained in:
2026-03-26 14:06:24 -04:00
parent 9fe5a34163
commit 8bf3649465
4 changed files with 231 additions and 5 deletions

View File

@ -91,12 +91,17 @@ impl<'a> ValidationContext<'a> {
if let Some(ref prefix) = self.schema.prefix_items {
for (i, sub_schema) in prefix.iter().enumerate() {
if i < len {
let path = format!("{}/{}", self.path, i);
if let Some(child_instance) = arr.get(i) {
let mut item_path = format!("{}/{}", self.path, i);
if let Some(obj) = child_instance.as_object() {
if let Some(id_str) = obj.get("id").and_then(|v| v.as_str()) {
item_path = format!("{}/{}", self.path, id_str);
}
}
let derived = self.derive(
sub_schema,
child_instance,
&path,
&item_path,
HashSet::new(),
self.extensible,
false,
@ -112,12 +117,17 @@ impl<'a> ValidationContext<'a> {
if let Some(ref items_schema) = self.schema.items {
for i in validation_index..len {
let path = format!("{}/{}", self.path, i);
if let Some(child_instance) = arr.get(i) {
let mut item_path = format!("{}/{}", self.path, i);
if let Some(obj) = child_instance.as_object() {
if let Some(id_str) = obj.get("id").and_then(|v| v.as_str()) {
item_path = format!("{}/{}", self.path, id_str);
}
}
let derived = self.derive(
items_schema,
child_instance,
&path,
&item_path,
HashSet::new(),
self.extensible,
false,