@@ -179,15 +179,9 @@ pub fn render(
179179        pub  mod  #name_sc #open
180180    } ) ; 
181181
182-     for  item in  mod_items { 
183-         out. extend ( quote !  { 
184-             #item
185-         } ) ; 
186-     } 
182+     out. extend ( mod_items) ; 
187183
188-     out. extend ( quote !  { 
189-        #close
190-     } ) ; 
184+     close. to_tokens ( & mut  out) ; 
191185
192186    Ok ( out) 
193187} 
@@ -730,12 +724,13 @@ fn cluster_block(
730724        util:: escape_brackets ( util:: respace ( c. description . as_ref ( ) . unwrap_or ( & c. name ) ) . as_ref ( ) ) ; 
731725
732726    // Generate the register block. 
733-     let  mod_name = match  c { 
734-         Cluster :: Single ( info)  => & info. name , 
735-         Cluster :: Array ( info,  _ai)  => & info. name , 
736-     } 
737-     . replace ( "[%s]" ,  "" ) 
738-     . replace ( "%s" ,  "" ) ; 
727+     let  mod_name = util:: replace_suffix ( 
728+         match  c { 
729+             Cluster :: Single ( info)  => & info. name , 
730+             Cluster :: Array ( info,  _ai)  => & info. name , 
731+         } , 
732+         "" , 
733+     ) ; 
739734    let  name_sc = Ident :: new ( & mod_name. to_sanitized_snake_case ( ) ,  Span :: call_site ( ) ) ; 
740735
741736    let  defaults = c. default_register_properties . derive_from ( defaults) ; 
@@ -794,8 +789,6 @@ fn expand_svd_register(register: &Register, name: Option<&str>) -> Vec<syn::Fiel
794789    match  register { 
795790        Register :: Single ( _info)  => out. push ( convert_svd_register ( register,  name) ) , 
796791        Register :: Array ( info,  array_info)  => { 
797-             let  has_brackets = info. name . contains ( "[%s]" ) ; 
798- 
799792            let  indices = array_info
800793                . dim_index 
801794                . as_ref ( ) 
@@ -808,18 +801,10 @@ fn expand_svd_register(register: &Register, name: Option<&str>) -> Vec<syn::Fiel
808801                    ) 
809802                } ) ; 
810803
811-             for  ( idx,  _i)  in  indices. iter ( ) . zip ( 0 ..)  { 
812-                 let  nb_name = if  has_brackets { 
813-                     info. name . replace ( "[%s]" ,  idx) 
814-                 }  else  { 
815-                     info. name . replace ( "%s" ,  idx) 
816-                 } ; 
804+             let  ty_name = util:: replace_suffix ( & info. name ,  "" ) ; 
817805
818-                 let  ty_name = if  has_brackets { 
819-                     info. name . replace ( "[%s]" ,  "" ) 
820-                 }  else  { 
821-                     info. name . replace ( "%s" ,  "" ) 
822-                 } ; 
806+             for  ( idx,  _i)  in  indices. iter ( ) . zip ( 0 ..)  { 
807+                 let  nb_name = util:: replace_suffix ( & info. name ,  idx) ; 
823808
824809                let  ty = name_to_ty ( & ty_name,  name) ; 
825810
@@ -849,13 +834,7 @@ fn convert_svd_register(register: &Register, name: Option<&str>) -> syn::Field {
849834            syn:: Type :: Path ( parse_str :: < syn:: TypePath > ( & name_to_ty ( & info. name ,  name) ) . unwrap ( ) ) , 
850835        ) , 
851836        Register :: Array ( info,  array_info)  => { 
852-             let  has_brackets = info. name . contains ( "[%s]" ) ; 
853- 
854-             let  nb_name = if  has_brackets { 
855-                 info. name . replace ( "[%s]" ,  "" ) 
856-             }  else  { 
857-                 info. name . replace ( "%s" ,  "" ) 
858-             } ; 
837+             let  nb_name = util:: replace_suffix ( & info. name ,  "" ) ; 
859838
860839            let  ty = syn:: Type :: Array ( 
861840                parse_str :: < syn:: TypeArray > ( & format ! ( 
@@ -883,8 +862,6 @@ fn expand_svd_cluster(cluster: &Cluster) -> Vec<syn::Field> {
883862    match  & cluster { 
884863        Cluster :: Single ( _info)  => out. push ( convert_svd_cluster ( cluster) ) , 
885864        Cluster :: Array ( info,  array_info)  => { 
886-             let  has_brackets = info. name . contains ( "[%s]" ) ; 
887- 
888865            let  indices = array_info
889866                . dim_index 
890867                . as_ref ( ) 
@@ -897,18 +874,10 @@ fn expand_svd_cluster(cluster: &Cluster) -> Vec<syn::Field> {
897874                    ) 
898875                } ) ; 
899876
900-             for  ( idx,  _i)  in  indices. iter ( ) . zip ( 0 ..)  { 
901-                 let  name = if  has_brackets { 
902-                     info. name . replace ( "[%s]" ,  idx) 
903-                 }  else  { 
904-                     info. name . replace ( "%s" ,  idx) 
905-                 } ; 
877+             let  ty_name = util:: replace_suffix ( & info. name ,  "" ) ; 
906878
907-                 let  ty_name = if  has_brackets { 
908-                     info. name . replace ( "[%s]" ,  "" ) 
909-                 }  else  { 
910-                     info. name . replace ( "%s" ,  "" ) 
911-                 } ; 
879+             for  ( idx,  _i)  in  indices. iter ( ) . zip ( 0 ..)  { 
880+                 let  name = util:: replace_suffix ( & info. name ,  idx) ; 
912881
913882                let  ty = name_to_ty ( & ty_name) ; 
914883
@@ -929,13 +898,7 @@ fn convert_svd_cluster(cluster: &Cluster) -> syn::Field {
929898            ) , 
930899        ) , 
931900        Cluster :: Array ( info,  array_info)  => { 
932-             let  has_brackets = info. name . contains ( "[%s]" ) ; 
933- 
934-             let  name = if  has_brackets { 
935-                 info. name . replace ( "[%s]" ,  "" ) 
936-             }  else  { 
937-                 info. name . replace ( "%s" ,  "" ) 
938-             } ; 
901+             let  name = util:: replace_suffix ( & info. name ,  "" ) ; 
939902
940903            let  ty = syn:: Type :: Array ( 
941904                parse_str :: < syn:: TypeArray > ( & format ! ( 
0 commit comments