raui_json_renderer/
lib.rs

1use 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}