xml_disassembler/transformers/
get_transformer.rs1use crate::transformers::{transform_to_json, transform_to_json5, transform_to_yaml};
4use crate::types::XmlElement;
5
6pub async fn transform_format(format: &str, xml_content: &XmlElement) -> Option<String> {
9 let result = match format.to_lowercase().as_str() {
10 "yaml" | "yml" => transform_to_yaml(xml_content).await,
11 "json5" => transform_to_json5(xml_content).await,
12 "json" => transform_to_json(xml_content).await,
13 _ => return None,
14 };
15 Some(result)
16}
17
18#[cfg(test)]
19mod tests {
20 use super::*;
21 use serde_json::json;
22
23 #[tokio::test]
24 async fn transform_format_yaml() {
25 let el = json!({ "r": {} });
26 assert!(transform_format("yaml", &el).await.is_some());
27 assert!(transform_format("yml", &el).await.is_some());
28 }
29
30 #[tokio::test]
31 async fn transform_format_json() {
32 let el = json!({ "r": {} });
33 assert!(transform_format("json", &el).await.is_some());
34 }
35
36 #[tokio::test]
37 async fn transform_format_json5() {
38 let el = json!({ "r": {} });
39 assert!(transform_format("json5", &el).await.is_some());
40 }
41
42 #[tokio::test]
43 async fn transform_format_unsupported_returns_none() {
44 let el = json!({ "r": {} });
45 assert!(transform_format("xml", &el).await.is_none());
46 assert!(transform_format("unknown", &el).await.is_none());
47 }
48}