summaryrefslogtreecommitdiff
path: root/src/encyclopedia.rs
diff options
context:
space:
mode:
authortroido <troido@protonmail.com>2020-05-16 12:03:49 +0200
committertroido <troido@protonmail.com>2020-05-16 12:03:49 +0200
commitdc25e66031fc0a1fbdb15579ad346bcb3903b3bb (patch)
tree5d1bb73ce84afec2683367e29a73968603fe1898 /src/encyclopedia.rs
parent9c4e59b670d22fbfa23def1d66a10ea3af4c214d (diff)
encyclopedia can be split over different files
Diffstat (limited to 'src/encyclopedia.rs')
-rw-r--r--src/encyclopedia.rs9
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
+ }
}