xml_disassembler/
types.rs1use serde_json::Value as JsonValue;
8
9pub type XmlElement = JsonValue;
12
13#[derive(Debug, Clone)]
15pub struct XmlElementParams<'a> {
16 pub element: XmlElement,
17 pub disassembled_path: &'a str,
18 pub unique_id_elements: Option<&'a str>,
19 pub root_element_name: &'a str,
20 pub root_attributes: XmlElement,
21 pub key: &'a str,
22 pub leaf_content: XmlElement,
23 pub leaf_count: usize,
24 pub has_nested_elements: bool,
25 pub format: &'a str,
26 pub xml_declaration: Option<XmlElement>,
27 pub strategy: &'a str,
28}
29
30#[derive(Debug, Clone)]
32pub struct BuildDisassembledFileOptions<'a> {
33 pub content: XmlElement,
34 pub disassembled_path: &'a str,
35 pub output_file_name: Option<&'a str>,
36 pub subdirectory: Option<&'a str>,
37 pub wrap_key: Option<&'a str>,
38 pub is_grouped_array: bool,
39 pub root_element_name: &'a str,
40 pub root_attributes: XmlElement,
41 pub format: &'a str,
42 pub xml_declaration: Option<XmlElement>,
43 pub unique_id_elements: Option<&'a str>,
44}
45
46#[derive(Debug, Clone, Default)]
48pub struct UnifiedParseResult {
49 pub leaf_content: XmlElement,
50 pub leaf_count: usize,
51 pub has_nested_elements: bool,
52 pub nested_groups: Option<XmlElementArrayMap>,
53}
54
55pub type XmlElementArrayMap = std::collections::HashMap<String, Vec<XmlElement>>;
57
58#[derive(Debug, Clone)]
61pub struct DecomposeRule {
62 pub tag: String,
64 pub path_segment: String,
66 pub mode: String,
68 pub field: String,
70}
71
72#[derive(Debug, Clone)]
74pub struct BuildDisassembledFilesOptions<'a> {
75 pub file_path: &'a str,
76 pub disassembled_path: &'a str,
77 pub base_name: &'a str,
78 pub post_purge: bool,
79 pub format: &'a str,
80 pub unique_id_elements: Option<&'a str>,
81 pub strategy: &'a str,
82 pub decompose_rules: Option<&'a [DecomposeRule]>,
84}
85
86#[derive(Debug, Clone)]
88pub struct LeafWriteParams<'a> {
89 pub leaf_count: usize,
90 pub leaf_content: XmlElement,
91 pub strategy: &'a str,
92 pub key_order: Vec<String>,
93 pub options: LeafWriteOptions<'a>,
94}
95
96#[derive(Debug, Clone)]
97pub struct LeafWriteOptions<'a> {
98 pub disassembled_path: &'a str,
99 pub output_file_name: &'a str,
100 pub root_element_name: &'a str,
101 pub root_attributes: XmlElement,
102 pub xml_declaration: Option<XmlElement>,
103 pub format: &'a str,
104}
105
106#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)]
108pub struct MultiLevelRule {
109 pub file_pattern: String,
111 pub root_to_strip: String,
113 pub unique_id_elements: String,
115 #[serde(default)]
117 pub path_segment: String,
118 #[serde(default)]
120 pub wrap_root_element: String,
121 #[serde(default)]
123 pub wrap_xmlns: String,
124}
125
126#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
128pub struct MultiLevelConfig {
129 pub rules: Vec<MultiLevelRule>,
130}