Skip to content

Commit 8f017c6

Browse files
committed
extract more functions
1 parent 41038f2 commit 8f017c6

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

ext/case_transform/src/lib.rs

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)