diff options
Diffstat (limited to 'src/template.rs')
| -rw-r--r-- | src/template.rs | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/template.rs b/src/template.rs index 6b2dec3..0ac03cd 100644 --- a/src/template.rs +++ b/src/template.rs @@ -12,7 +12,7 @@ use crate::{ pub struct EntityType(pub String); #[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)] -enum SaveOption { +pub enum SaveOption { Default, False, Always @@ -23,7 +23,7 @@ pub struct Template { pub name: EntityType, pub args: Vec<Parameter>, pub kwargs: HashMap<String, Parameter>, - save: SaveOption, + pub save: SaveOption, } @@ -65,6 +65,16 @@ impl Template { self } + pub fn merge(mut self, other: Template) -> Self { + if self.save == SaveOption::Default { + self.save = other.save; + } + for (key, value) in other.kwargs { + self.kwargs.entry(key).or_insert(value); + } + self + } + pub fn from_json(v: &Value) -> PResult<Template> { let val = match v { Value::String(s) => json!({"type": s}), |
