transform & more

This commit is contained in:
thosakwe 2017-03-11 02:17:52 -05:00
parent 12587bb5a0
commit 09247069dc

View file

@ -41,7 +41,7 @@ HookedServiceEventListener toJson() {
} }
if (e.isBefore) { if (e.isBefore) {
return e.data = normalize(e.data); e.data = normalize(e.data);
} else } else
e.result = normalize(e.result); e.result = normalize(e.result);
}; };
@ -49,6 +49,21 @@ HookedServiceEventListener toJson() {
/// Mutates `e.data` or `e.result` using the given [transformer]. /// Mutates `e.data` or `e.result` using the given [transformer].
HookedServiceEventListener transform(transformer(obj)) { HookedServiceEventListener transform(transformer(obj)) {
normalize(obj) {
if (obj == null)
return null;
else if (obj is Iterable)
return obj.map(normalize).toList();
else
return transformer(obj);
}
return (HookedServiceEvent e) {
if (e.isBefore) {
e.data = normalize(e.data);
} else
e.result = normalize(e.result);
};
} }
/// Transforms `e.data` or `e.result` into an instance of the given [type], /// Transforms `e.data` or `e.result` into an instance of the given [type],
@ -62,7 +77,7 @@ HookedServiceEventListener toType(Type type) {
} }
if (e.isBefore) { if (e.isBefore) {
return e.data = normalize(e.data); e.data = normalize(e.data);
} else } else
e.result = normalize(e.result); e.result = normalize(e.result);
}; };