summaryrefslogtreecommitdiff
path: root/src/encyclopedia.rs
diff options
context:
space:
mode:
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
+ }
}