diff options
| author | troido <troido@protonmail.com> | 2020-09-27 15:33:09 +0200 |
|---|---|---|
| committer | troido <troido@protonmail.com> | 2020-09-27 15:33:09 +0200 |
| commit | a20bcfed7d3b6aacc3211514d9804651a458e725 (patch) | |
| tree | d4d4aaab553a3a9065e9dba8ef4fdec9ccf45778 /src/template.rs | |
| parent | c3a282d04f1fd5c7cc4cf5ebb478129c2b1c42fa (diff) | |
better serialisation structure for encyclopediae
["list", [1, 2, 3]] is now just [1, 2, 3] and {"type": builtwall", "kwargs": {"health": 50}} is now {":template": "builtwall", "health": 50}
Diffstat (limited to 'src/template.rs')
| -rw-r--r-- | src/template.rs | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/template.rs b/src/template.rs index 1ef6fc1..6eb27e1 100644 --- a/src/template.rs +++ b/src/template.rs @@ -23,6 +23,16 @@ enum TemplateSave { save: Option<bool>, #[serde(default, skip_serializing_if = "Option::is_none")] clan: Option<String> + }, + New{ + #[serde(rename = ":template")] + name: EntityType, + #[serde(rename="__save__", default, skip_serializing_if = "Option::is_none")] + save: Option<bool>, + #[serde(rename="__clan__", default, skip_serializing_if = "Option::is_none")] + clan: Option<String>, + #[serde(default, flatten, skip_serializing_if = "HashMap::is_empty")] + kwargs: HashMap<String, Parameter> } } @@ -40,7 +50,8 @@ impl From<TemplateSave> for Template { fn from(ts: TemplateSave) -> Self { match ts { TemplateSave::Name(name) => Self{name, kwargs: HashMap::new(), save: None, clan: None}, - TemplateSave::Full{name, kwargs, save, clan} => Self{name, kwargs, save, clan} + TemplateSave::Full{name, kwargs, save, clan} => Self{name, kwargs, save, clan}, + TemplateSave::New{name, kwargs, save, clan} => Self{name, kwargs, save, clan} } } } @@ -49,7 +60,7 @@ impl Into<TemplateSave> for Template { if self.kwargs.is_empty() && self.save == None && self.clan == None { return TemplateSave::Name(self.name); } - TemplateSave::Full { + TemplateSave::New { name: self.name, kwargs: self.kwargs, save: self.save, |
