This commit is contained in:
Quaternions 2024-01-22 21:47:02 -08:00
parent 15fd698a21
commit 7863137174

View File

@ -1197,11 +1197,11 @@ impl Query for QueryTriplet{
} }
} }
async fn discern_node(search_path:&std::path::PathBuf,search_name:&str,style:Option<DecompileStyle>)->AResult<CompileNode>{ async fn discern_node(search_path:&std::path::PathBuf,search_name:&str,style:Option<DecompileStyle>)->AResult<Option<CompileNode>>{
let mut contents_folder=search_path.clone(); let mut contents_folder=search_path.clone();
contents_folder.push(search_name); contents_folder.push(search_name);
//folder //folder
if let Ok(dir)=tokio::fs::read_dir(contents_folder.as_path()).await{ Ok(if let Ok(dir)=tokio::fs::read_dir(contents_folder.as_path()).await{
//scan inside the folder for an object to define the class of the folder //scan inside the folder for an object to define the class of the folder
let (script_file,model_file)=tokio::join!( let (script_file,model_file)=tokio::join!(
async {match style{ async {match style{
@ -1220,7 +1220,7 @@ async fn discern_node(search_path:&std::path::PathBuf,search_name:&str,style:Opt
get_file_async(contents_folder.clone(),format!("{}.rbxmx",search_name)) get_file_async(contents_folder.clone(),format!("{}.rbxmx",search_name))
); );
//model? script? both? //model? script? both?
Ok(match (script_file,model_file){ Some(match (script_file,model_file){
(Ok(mut file),Err(QueryResolveError::NotFound))=>{ (Ok(mut file),Err(QueryResolveError::NotFound))=>{
//read entire file //read entire file
let mut buf=String::new(); let mut buf=String::new();
@ -1249,8 +1249,9 @@ async fn discern_node(search_path:&std::path::PathBuf,search_name:&str,style:Opt
|(_,Err(e))=>Err(e)? |(_,Err(e))=>Err(e)?
}) })
}else{ }else{
Err(anyhow::Error::msg("message")) //a folder of this name does not exist
} None
})
} }
enum CompileClass{ enum CompileClass{
@ -1301,7 +1302,9 @@ async fn compile(config:CompileConfig)->AResult<()>{
CompileStackInstruction::Referent(item_ref)=>{ CompileStackInstruction::Referent(item_ref)=>{
let item=dom.get_by_ref(item_ref).ok_or(anyhow::Error::msg("null child ref"))?; let item=dom.get_by_ref(item_ref).ok_or(anyhow::Error::msg("null child ref"))?;
//check if item exists in folder or subfolder of same name //check if item exists in folder or subfolder of same name
if let Ok(obj)=discern_node(&folder,item.name.as_str(),None).await{ todo!("this is totally unnecessary,
only the folder needs to exist to determine if traversal should continue");
if let Some(obj)=discern_node(&folder,item.name.as_str(),None).await?{
//cool //cool
}else{ }else{
//determine if this is ok //determine if this is ok