diff options
Diffstat (limited to 'src/encyclopedia.rs')
| -rw-r--r-- | src/encyclopedia.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/encyclopedia.rs b/src/encyclopedia.rs index 54fa82b..e100cad 100644 --- a/src/encyclopedia.rs +++ b/src/encyclopedia.rs @@ -37,7 +37,7 @@ impl Encyclopedia { let items = val .get("items") - .ok_or(perr!("no items in encyclopedia json"))? + .unwrap_or(&json!({})) .as_object() .ok_or(perr!("encyclopedia items not a json object"))? .into_iter() @@ -105,7 +105,6 @@ impl Encyclopedia { assemblages, items }) - } pub fn validate(&self) -> Result<()> { @@ -125,5 +124,11 @@ impl Encyclopedia { pub fn get_item(&self, id: &ItemId) -> Option<Item> { self.items.get(id).map(|item| item.clone()) } + + pub fn merge(mut self, mut other: Encyclopedia) -> Encyclopedia { + self.assemblages.extend(other.assemblages.drain()); + self.items.extend(other.items.drain()); + self + } } |
