summaryrefslogtreecommitdiff
path: root/src/load.rs
diff options
context:
space:
mode:
authortroido <troido@protonmail.com>2020-02-21 19:45:50 +0100
committertroido <troido@protonmail.com>2020-02-21 19:45:50 +0100
commit8169718d7e0b189acdf69c14ee817d2c6aa684e1 (patch)
tree7c73442391e320793a8dcc9ba6b8ea5a4ade5318 /src/load.rs
parent1f85c11d0ebb0a879b7825b8e78e473a77d8b778 (diff)
remove forgoten file 'load.rs'
Diffstat (limited to 'src/load.rs')
-rw-r--r--src/load.rs69
1 files changed, 0 insertions, 69 deletions
diff --git a/src/load.rs b/src/load.rs
deleted file mode 100644
index 186ea7e..0000000
--- a/src/load.rs
+++ /dev/null
@@ -1,69 +0,0 @@
-
-use std::collections::HashMap;
-use serde_json::Value;
-use super::assemblage::Assemblage;
-use super::assemblages::{Player, Grass, Wall};
-
-pub fn load_assemblages(data: Value) -> Vec<Box<dyn Assemblage>> {
- parse_assemblages(data).into_iter().filter_map(|x| x).collect()
-}
-
-fn parse_assemblages(data: Value) -> Vec<Option<Box<dyn Assemblage>>> {
- match data {
- Value::String(txt) => vec![from_args(txt, Vec::new(), HashMap::new())],
- Value::Array(list) => list.into_iter().map(parse_assemblages).flatten().collect(),
- Value::Object(mut obj) => {
- if let Some(Value::String(typename)) = obj.remove("type") {
- let args = if let Some(Value::Array(a)) = obj.remove("args") {a} else {Vec::new()};
- let kwargs: HashMap<String, Value> = if let Some(Value::Object(o)) = obj.remove("kwargs") {
- o.into_iter().collect()
- } else {HashMap::new()};
- vec![from_args(
- typename,
- args,
- kwargs
- )]
- } else {Vec::new()}
- },
- _ => Vec::new()
- }
-}
-
-macro_rules! dynasm {
- ($typ:ident) => {Some({
- let b : Box<dyn Assemblage> = Box::new({
- let o = $typ::default();
- o
- });
- b
- })}
-}
-
-fn from_args(typename: String, args: Vec<Value>, kwargs: HashMap<String, Value>) -> Option<Box<dyn Assemblage>>{
- let mut obj = match typename.as_str() {
- "player" => dynasm!(Player),
- "grass" => dynasm!(Grass),
- "wall" => dynasm!(Wall),
- _ => None
- }?;
- obj.init_from_json(args, kwargs);
- Some(obj)
-}
-
-
-#[cfg(test)]
-mod tests {
- use super::*;
- use serde_json::json;
- use std::any::Any;
- #[test]
- fn test_assemblage_from_json() {
- let mut walls1 = load_assemblages(json!("wall"));
- assert_eq!(walls1.len(), 1);
- let wallbox1 = walls1.pop().unwrap();
-// assert_eq!(, vec![Box::new(Wall{})]);
-// assert_eq!(load_assemblages(json!("wall", ["test"], {"abc": 123})), Wall{});
- }
-}
-
-