use std::collections::HashMap; use serde_json::{json, Value}; use crate::{ parameter::Parameter, Result, aerr }; #[derive(Debug, PartialEq, Eq, Clone, Hash)] pub struct EntityType(pub String); #[derive(Debug, Clone, PartialEq)] pub struct Template { pub name: EntityType, pub args: Vec, pub kwargs: HashMap, pub save: bool } impl Template { pub fn new(name: &str, kwargs: HashMap) -> Self { Self { name: EntityType(name.to_string()), args: Vec::new(), kwargs, save: true } } pub fn empty(name: &str) -> Self { Self::new(name, HashMap::new()) } pub fn from_entity_type(typ: EntityType) -> Self { Self { name: typ, args: Vec::new(), kwargs: HashMap::new(), save: true } } pub fn unsaved(mut self) -> Self { self.save = false; self } pub fn from_json(val: &Value) -> Result