validation: refactor get_partial_path

This commit is contained in:
Quaternions 2025-03-27 12:22:27 -07:00 committed by Quaternions
parent b02b3d205e
commit af9f413b49

@ -321,22 +321,16 @@ fn recursive_collect_superclass(objects:&mut std::vec::Vec<rbx_dom_weak::types::
} }
fn get_partial_path(dom:&rbx_dom_weak::WeakDom,instance:&rbx_dom_weak::Instance)->String{ fn get_partial_path(dom:&rbx_dom_weak::WeakDom,instance:&rbx_dom_weak::Instance)->String{
struct ParentIter<'a>{ let mut names:Vec<_>=core::iter::successors(
dom:&'a rbx_dom_weak::WeakDom, Some(instance),
instance:Option<&'a rbx_dom_weak::Instance>, |i|dom.get_by_ref(i.parent())
} ).map(
impl<'a> Iterator for ParentIter<'a>{ |i|i.name.as_str()
type Item=&'a rbx_dom_weak::Instance; ).collect();
fn next(&mut self)->Option<Self::Item>{ // discard the name of the root object
let parent=self.instance.map(|i|i.parent()).and_then(|p|self.dom.get_by_ref(p)); names.pop();
core::mem::replace(&mut self.instance,parent) names.reverse();
} names.join(".")
}
let mut tragic:Vec<_>=ParentIter{dom,instance:Some(instance)}.map(|i|i.name.as_str()).collect();
tragic.pop();
tragic.reverse();
tragic.join(".")
} }
fn get_script_refs(dom:&rbx_dom_weak::WeakDom)->Vec<rbx_dom_weak::types::Ref>{ fn get_script_refs(dom:&rbx_dom_weak::WeakDom)->Vec<rbx_dom_weak::types::Ref>{