diff --git a/js/test_cases/render_unusual_types/input1.json b/js/test_cases/render_unusual_types/input1.json new file mode 100644 index 0000000..0a08cba --- /dev/null +++ b/js/test_cases/render_unusual_types/input1.json @@ -0,0 +1 @@ +{"name": ["Bob", "Smith"]} diff --git a/js/test_cases/render_unusual_types/input2.json b/js/test_cases/render_unusual_types/input2.json new file mode 100644 index 0000000..b81f636 --- /dev/null +++ b/js/test_cases/render_unusual_types/input2.json @@ -0,0 +1 @@ +{"name": {"first": "Alice", "last": "Jones"}} diff --git a/js/test_cases/render_unusual_types/input3.json b/js/test_cases/render_unusual_types/input3.json new file mode 100644 index 0000000..382a810 --- /dev/null +++ b/js/test_cases/render_unusual_types/input3.json @@ -0,0 +1 @@ +{"name": ["Bob", {"title": "sir"}, [1,2,3]]} diff --git a/js/test_cases/render_unusual_types/main.dust b/js/test_cases/render_unusual_types/main.dust new file mode 100644 index 0000000..09f2e19 --- /dev/null +++ b/js/test_cases/render_unusual_types/main.dust @@ -0,0 +1 @@ +Hello {name}! diff --git a/src/bin.rs b/src/bin.rs index 9ec9dad..1fa2daa 100644 --- a/src/bin.rs +++ b/src/bin.rs @@ -79,8 +79,13 @@ impl Renderable for serde_json::Value { serde_json::Value::Bool(boolean) => Ok(boolean.to_string()), serde_json::Value::Number(num) => Ok(num.to_string()), serde_json::Value::String(string) => Ok(string.to_string()), - serde_json::Value::Array(_arr) => Err(RenderError::CantRender { elem: self }), - serde_json::Value::Object(_obj) => Err(RenderError::CantRender { elem: self }), + serde_json::Value::Array(arr) => { + let rendered: Result, RenderError> = + arr.iter().map(|val| val.render()).collect(); + let rendered_slice: &[String] = &rendered?; + Ok(rendered_slice.join(",")) + } + serde_json::Value::Object(_obj) => Ok("[object Object]".to_owned()), } } }