1
- use super :: { new_node, Element , ElementMerge , Encode , EncodeChildren , EncodeError , XMLNode } ;
1
+ use super :: {
2
+ new_node, Config , Element , ElementMerge , Encode , EncodeChildren , EncodeError , XMLNode ,
3
+ } ;
2
4
3
- use crate :: svd:: { Cluster , ClusterInfo } ;
5
+ use crate :: {
6
+ config:: { change_case, format_number} ,
7
+ svd:: { Cluster , ClusterInfo } ,
8
+ } ;
4
9
5
10
impl Encode for Cluster {
6
11
type Error = EncodeError ;
7
12
8
- fn encode ( & self ) -> Result < Element , EncodeError > {
13
+ fn encode_with_config ( & self , config : & Config ) -> Result < Element , EncodeError > {
9
14
match self {
10
- Self :: Single ( i) => i. encode ( ) ,
15
+ Self :: Single ( i) => i. encode_with_config ( config ) ,
11
16
Self :: Array ( i, a) => {
12
17
let mut e = Element :: new ( "cluster" ) ;
13
- e. merge ( & a. encode ( ) ?) ;
14
- e. merge ( & i. encode ( ) ?) ;
18
+ e. merge ( & a. encode_with_config ( config ) ?) ;
19
+ e. merge ( & i. encode_with_config ( config ) ?) ;
15
20
Ok ( e)
16
21
}
17
22
}
@@ -21,17 +26,23 @@ impl Encode for Cluster {
21
26
impl Encode for ClusterInfo {
22
27
type Error = EncodeError ;
23
28
24
- fn encode ( & self ) -> Result < Element , EncodeError > {
29
+ fn encode_with_config ( & self , config : & Config ) -> Result < Element , EncodeError > {
25
30
let mut e = Element :: new ( "cluster" ) ;
26
31
27
- e. children . push ( new_node ( "name" , self . name . clone ( ) ) ) ;
32
+ e. children . push ( new_node (
33
+ "name" ,
34
+ change_case ( & self . name , config. cluster_name ) ,
35
+ ) ) ;
28
36
29
37
if let Some ( v) = & self . description {
30
38
e. children . push ( new_node ( "description" , v. clone ( ) ) ) ;
31
39
}
32
40
33
41
if let Some ( v) = & self . alternate_cluster {
34
- e. children . push ( new_node ( "alternateCluster" , v. clone ( ) ) ) ;
42
+ e. children . push ( new_node (
43
+ "alternateCluster" ,
44
+ change_case ( v, config. cluster_name ) ,
45
+ ) ) ;
35
46
}
36
47
37
48
if let Some ( v) = & self . header_struct_name {
@@ -40,19 +51,24 @@ impl Encode for ClusterInfo {
40
51
41
52
e. children . push ( new_node (
42
53
"addressOffset" ,
43
- format ! ( "{}" , self . address_offset) ,
54
+ format_number ( self . address_offset , config . cluster_address_offset ) ,
44
55
) ) ;
45
56
46
- e. children
47
- . extend ( self . default_register_properties . encode ( ) ?) ;
57
+ e. children . extend (
58
+ self . default_register_properties
59
+ . encode_with_config ( config) ?,
60
+ ) ;
48
61
49
62
for c in & self . children {
50
- e. children . push ( XMLNode :: Element ( c. encode ( ) ?) ) ;
63
+ e. children
64
+ . push ( XMLNode :: Element ( c. encode_with_config ( config) ?) ) ;
51
65
}
52
66
53
67
if let Some ( v) = & self . derived_from {
54
- e. attributes
55
- . insert ( String :: from ( "derivedFrom" ) , v. to_string ( ) ) ;
68
+ e. attributes . insert (
69
+ String :: from ( "derivedFrom" ) ,
70
+ change_case ( v, config. cluster_name ) ,
71
+ ) ;
56
72
}
57
73
58
74
Ok ( e)
0 commit comments