@@ -32,15 +32,28 @@ methods! (
3232 result
3333 }
3434
35+ fn transformArray( value: Array , transformMethod: & Fn ( AnyObject ) -> AnyObject ) -> Array {
36+ value. map( |item| transformMethod( item) ) . unwrap( )
37+ }
38+
39+ fn transformHash( value: Hash , transformMethod: & Fn ( AnyObject ) -> AnyObject ) -> Hash {
40+ deepTransformKeys( value, |key| transformMethod( key) )
41+ }
42+
43+ fn transformSymbol( value: Symbol , transformMethod: & Fn ( AnyObject ) -> AnyObject ) -> Symbol {
44+ let transformed = transformMethod( value) ;
45+ Symbol :: new( transformed) ;
46+ }
47+
3548 fn transform(
3649 value: AnyObject ,
3750 objectTransform: & Fn ( AnyObject ) -> AnyObject ,
3851 keyTransform: & Fn ( String ) -> String
3952 ) -> AnyObject {
4053 match value. unwrap( ) . ty( ) {
41- ValueType :: Array => value . map ( |item| objectTransform( item ) ) . to_any_object( ) ,
42- ValueType :: Hash => deepTransformKeys ( value, & |key| objectTransform( key ) ) . to_any_object( ) ,
43- ValueType :: Symbol => Symbol :: new ( objectTransform ( value. to_string ) ) . to_any_object( ) ,
54+ ValueType :: Array => transformArray ( value , objectTransform) . to_any_object( ) ,
55+ ValueType :: Hash => transformHash ( value, objectTransform) . to_any_object( ) ,
56+ ValueType :: Symbol => transformSymbol ( value, objectTransform ) . to_any_object( ) ,
4457 ValueType :: RString => keyTransform( value) . to_any_object( ) ,
4558 ValueType :: Object => value
4659 }
0 commit comments