@@ -32,15 +32,28 @@ methods! (
32
32
result
33
33
}
34
34
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
+
35
48
fn transform(
36
49
value: AnyObject ,
37
50
objectTransform: & Fn ( AnyObject ) -> AnyObject ,
38
51
keyTransform: & Fn ( String ) -> String
39
52
) -> AnyObject {
40
53
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( ) ,
44
57
ValueType :: RString => keyTransform( value) . to_any_object( ) ,
45
58
ValueType :: Object => value
46
59
}
0 commit comments