@@ -30,8 +30,7 @@ pub fn token(kind: Tok) -> Child {
3030
3131impl Builder {
3232 pub fn number ( & mut self , v : impl AsRef < str > ) -> Child {
33- self . buf . write_str ( v. as_ref ( ) ) . unwrap ( ) ;
34- token ( Tok :: Number )
33+ tree ( Kind :: Literal , vec ! [ self . spanned_token( Tok :: Number , v) ] )
3534 }
3635
3736 pub fn spanned_token ( & mut self , kind : Tok , str : impl AsRef < str > ) -> Child {
@@ -72,25 +71,46 @@ impl Builder {
7271 PropertyValueEnum :: None ( _) => {
7372 tree ( Kind :: Literal , vec ! [ token( Tok :: LCurly ) , token( Tok :: RCurly ) ] )
7473 }
75- PropertyValueEnum :: U8 ( n) => tree ( Kind :: Literal , vec ! [ token( Tok :: Number ) ] ) ,
76- PropertyValueEnum :: U16 ( n) => tree ( Kind :: Literal , vec ! [ token( Tok :: Number ) ] ) ,
77- PropertyValueEnum :: U32 ( n) => tree ( Kind :: Literal , vec ! [ token( Tok :: Number ) ] ) ,
78- PropertyValueEnum :: U64 ( n) => tree ( Kind :: Literal , vec ! [ token( Tok :: Number ) ] ) ,
79- PropertyValueEnum :: I8 ( n) => tree ( Kind :: Literal , vec ! [ token( Tok :: Number ) ] ) ,
80- PropertyValueEnum :: I16 ( n) => tree ( Kind :: Literal , vec ! [ token( Tok :: Number ) ] ) ,
81- PropertyValueEnum :: I32 ( n) => tree ( Kind :: Literal , vec ! [ token( Tok :: Number ) ] ) ,
82- PropertyValueEnum :: I64 ( n) => tree ( Kind :: Literal , vec ! [ token( Tok :: Number ) ] ) ,
83- PropertyValueEnum :: F32 ( n) => tree ( Kind :: Literal , vec ! [ token( Tok :: Number ) ] ) ,
84- PropertyValueEnum :: Vector2 ( v) => tree ( Kind :: Literal , vec ! [ token( Tok :: Number ) ] ) ,
85- PropertyValueEnum :: Vector3 ( v) => tree ( Kind :: Literal , vec ! [ token( Tok :: Number ) ] ) ,
86- PropertyValueEnum :: Vector4 ( v) => tree ( Kind :: Literal , vec ! [ token( Tok :: Number ) ] ) ,
74+ PropertyValueEnum :: U8 ( n) => self . number ( n. to_string ( ) ) ,
75+ PropertyValueEnum :: U16 ( n) => self . number ( n. to_string ( ) ) ,
76+ PropertyValueEnum :: U32 ( n) => self . number ( n. to_string ( ) ) ,
77+ PropertyValueEnum :: U64 ( n) => self . number ( n. to_string ( ) ) ,
78+ PropertyValueEnum :: I8 ( n) => self . number ( n. to_string ( ) ) ,
79+ PropertyValueEnum :: I16 ( n) => self . number ( n. to_string ( ) ) ,
80+ PropertyValueEnum :: I32 ( n) => self . number ( n. to_string ( ) ) ,
81+ PropertyValueEnum :: I64 ( n) => self . number ( n. to_string ( ) ) ,
82+ PropertyValueEnum :: F32 ( n) => self . number ( n. to_string ( ) ) ,
83+ PropertyValueEnum :: Vector2 ( v) => {
84+ let items = v
85+ . to_array ( )
86+ . iter ( )
87+ . flat_map ( |v| [ self . number ( v. to_string ( ) ) , token ( Tok :: Comma ) ] )
88+ . collect ( ) ;
89+ self . block ( items)
90+ }
91+ PropertyValueEnum :: Vector3 ( v) => {
92+ let items = v
93+ . to_array ( )
94+ . iter ( )
95+ . map ( |v| self . number ( v. to_string ( ) ) )
96+ . collect ( ) ;
97+ self . block ( items)
98+ }
99+ PropertyValueEnum :: Vector4 ( v) => {
100+ let items = v
101+ . to_array ( )
102+ . iter ( )
103+ . map ( |v| self . number ( v. to_string ( ) ) )
104+ . collect ( ) ;
105+ self . block ( items)
106+ }
87107 PropertyValueEnum :: String ( s) => tree (
88108 Kind :: Literal ,
89109 vec ! [ token( Tok :: Quote ) , self . string( & * * s) , token( Tok :: Quote ) ] ,
90110 ) ,
91111 PropertyValueEnum :: Container ( container)
92112 | PropertyValueEnum :: UnorderedContainer ( values:: UnorderedContainer ( container) ) => {
93- let mut children = vec ! [ token( Tok :: LBrack ) ] ;
113+ let mut children = vec ! [ token( Tok :: LCurly ) ] ;
94114
95115 for ( i, item) in container. clone ( ) . into_items ( ) . enumerate ( ) {
96116 if i > 0 {
@@ -99,7 +119,7 @@ impl Builder {
99119 children. push ( self . value_to_cst ( & item) ) ;
100120 }
101121
102- children. push ( token ( Tok :: RBrack ) ) ;
122+ children. push ( token ( Tok :: RCurly ) ) ;
103123 tree ( Kind :: TypeArgList , children)
104124 }
105125 PropertyValueEnum :: Matrix44 ( matrix44) => todo ! ( ) ,
@@ -156,7 +176,6 @@ impl Builder {
156176 ) ,
157177 ] ;
158178 if let Some ( sub) = rito_type. subtypes [ 1 ] {
159- args. push ( token ( Tok :: Comma ) ) ;
160179 args. push ( tree (
161180 Kind :: TypeArg ,
162181 vec ! [ self . spanned_token( Tok :: Name , kind_to_type_name( sub) ) ] ,
@@ -293,7 +312,8 @@ mod test {
293312 Bin :: builder ( )
294313 . object (
295314 BinObject :: builder ( 0xDEADBEEF , 0x12344321 )
296- . property ( 0x44444444 , values:: String :: from ( "hello" ) )
315+ . property ( 0x1 , values:: String :: from ( "hello" ) )
316+ . property ( 0x2 , values:: U64 :: new ( 9 ) )
297317 . property (
298318 0x9191919 ,
299319 values:: Container :: new ( vec ! [
0 commit comments