raui_json_renderer/
lib.rs1use raui_core::{
2 layout::{CoordsMapping, Layout},
3 renderer::Renderer,
4 widget::unit::WidgetUnit,
5};
6use serde::{Deserialize, Serialize};
7
8#[derive(Debug, Default, Copy, Clone, Serialize, Deserialize)]
9pub struct JsonRenderer {
10 #[serde(default)]
11 pub pretty: bool,
12}
13
14impl Renderer<String, serde_json::Error> for JsonRenderer {
15 fn render(
16 &mut self,
17 tree: &WidgetUnit,
18 _: &CoordsMapping,
19 _layout: &Layout,
20 ) -> Result<String, serde_json::Error> {
21 if self.pretty {
22 serde_json::to_string_pretty(tree)
23 } else {
24 serde_json::to_string(tree)
25 }
26 }
27}
28
29impl Renderer<serde_json::Value, serde_json::Error> for JsonRenderer {
30 fn render(
31 &mut self,
32 tree: &WidgetUnit,
33 _: &CoordsMapping,
34 _: &Layout,
35 ) -> Result<serde_json::Value, serde_json::Error> {
36 serde_json::to_value(tree)
37 }
38}