1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
use crate::{
GeneralRendererSetting, RenderResult, renderer::general::error::GeneralRendererSerializeError,
};
use serde::Serialize;
pub mod error;
pub struct GeneralRenderer;
impl GeneralRenderer {
// Renders data in the specified format to the given RenderResult.
pub fn render<T: Serialize + Send>(
data: &T,
setting: &GeneralRendererSetting,
r: &mut RenderResult,
) -> Result<(), GeneralRendererSerializeError> {
match setting {
GeneralRendererSetting::Disable => Ok(()),
GeneralRendererSetting::Json => Self::render_to_json(data, r),
GeneralRendererSetting::JsonPretty => Self::render_to_json_pretty(data, r),
GeneralRendererSetting::Yaml => Self::render_to_yaml(data, r),
GeneralRendererSetting::Toml => Self::render_to_toml(data, r),
GeneralRendererSetting::Ron => Self::render_to_ron(data, r),
GeneralRendererSetting::RonPretty => Self::render_to_ron_pretty(data, r),
}
}
/// Serializes data to JSON format and writes it to the render result.
pub fn render_to_json<T: Serialize + Send>(
data: &T,
r: &mut RenderResult,
) -> Result<(), GeneralRendererSerializeError> {
let json_string = serde_json::to_string(data)
.map_err(|e| GeneralRendererSerializeError::new(e.to_string()))?;
r.print(format!("{}", json_string).as_str());
Ok(())
}
/// Serializes data to pretty-printed JSON format and writes it to the render result.
pub fn render_to_json_pretty<T: Serialize + Send>(
data: &T,
r: &mut RenderResult,
) -> Result<(), GeneralRendererSerializeError> {
let json_string = serde_json::to_string_pretty(data)
.map_err(|e| GeneralRendererSerializeError::new(e.to_string()))?;
r.print(format!("{}", json_string).as_str());
Ok(())
}
/// Serializes data to RON format and writes it to the render result.
pub fn render_to_ron<T: Serialize + Send>(
data: &T,
r: &mut RenderResult,
) -> Result<(), GeneralRendererSerializeError> {
let ron_string = ron::ser::to_string(data)
.map_err(|e| GeneralRendererSerializeError::new(e.to_string()))?;
r.print(format!("{}", ron_string).as_str());
Ok(())
}
/// Serializes data to pretty-printed RON format and writes it to the render result.
pub fn render_to_ron_pretty<T: Serialize + Send>(
data: &T,
r: &mut RenderResult,
) -> Result<(), GeneralRendererSerializeError> {
let mut pretty_config = ron::ser::PrettyConfig::new();
pretty_config.new_line = std::borrow::Cow::from("\n");
pretty_config.indentor = std::borrow::Cow::from(" ");
let ron_string = ron::ser::to_string_pretty(data, pretty_config)
.map_err(|e| GeneralRendererSerializeError::new(e.to_string()))?;
r.print(format!("{}", ron_string).as_str());
Ok(())
}
/// Serializes data to TOML format and writes it to the render result.
pub fn render_to_toml<T: Serialize + Send>(
data: &T,
r: &mut RenderResult,
) -> Result<(), GeneralRendererSerializeError> {
let toml_string =
toml::to_string(data).map_err(|e| GeneralRendererSerializeError::new(e.to_string()))?;
r.print(format!("{}", toml_string).as_str());
Ok(())
}
/// Serializes data to YAML format and writes it to the render result.
pub fn render_to_yaml<T: Serialize + Send>(
data: &T,
r: &mut RenderResult,
) -> Result<(), GeneralRendererSerializeError> {
let yaml_string = serde_yaml::to_string(data)
.map_err(|e| GeneralRendererSerializeError::new(e.to_string()))?;
r.print(format!("{}", yaml_string).as_str());
Ok(())
}
}
|