use crate::prelude::*;
#[derive(Clone, Debug)]
pub struct TheCodePackage {
pub name: String,
pub id: Uuid,
pub modules: FxHashMap<String, TheCodeModule>,
}
impl Default for TheCodePackage {
fn default() -> Self {
TheCodePackage::new()
}
}
impl TheCodePackage {
pub fn new() -> Self {
Self {
name: "Unnamed".to_string(),
id: Uuid::new_v4(),
modules: FxHashMap::default(),
}
}
pub fn insert_module(&mut self, name: String, module: TheCodeModule) {
self.modules.insert(name, module);
}
pub fn get_module(&self, name: &String) -> Option<&TheCodeModule> {
self.modules.get(name)
}
pub fn get_function_codegrid(&self, codegrid_id: &Uuid) -> Option<&TheCodeModule> {
self.modules
.values()
.find(|module| module.codegrid_id == *codegrid_id)
}
pub fn get_function_codegrid_mut(&mut self, codegrid_id: &Uuid) -> Option<&mut TheCodeModule> {
self.modules
.values_mut()
.find(|module| module.codegrid_id == *codegrid_id)
}
pub fn get_function_mut(&mut self, name: &String) -> Option<&mut TheCodeModule> {
self.modules.get_mut(name)
}
pub fn execute(&mut self, name: String, sandbox: &mut TheCodeSandbox) {
if let Some(module) = self.modules.get_mut(&name) {
module.execute(sandbox);
}
}
}