GetterSetter
class
class GetterSetter {
static stripTrailingNulls(List l) {
while (l.length > 0 && l.last == null) {
l.removeLast();
}
return l;
}
_maybeInvoke(instanceMirror, symbol) {
if (instanceMirror.type.members.containsKey(symbol)) {
MethodMirror methodMirror = instanceMirror.type.members[symbol];
return relaxFnArgs(([a0, a1, a2, a3, a4, a5]) {
var args = stripTrailingNulls([a0, a1, a2, a3, a4, a5]);
return instanceMirror.invoke(symbol, args).reflectee;
});
}
return null;
}
Function getter(String key) {
var symbol = new Symbol(key);
return (o) {
InstanceMirror instanceMirror = reflect(o);
try {
return instanceMirror.getField(symbol).reflectee;
} on NoSuchMethodError catch (e) {
var invokeClosure = _maybeInvoke(instanceMirror, symbol);
if (invokeClosure == null) {
rethrow;
}
return invokeClosure;
} on UnsupportedError catch (e) {
var invokeClosure = _maybeInvoke(instanceMirror, symbol);
if (invokeClosure == null) {
rethrow;
}
return invokeClosure;
}
};
}
Function setter(String key) {
var symbol = new Symbol(key);
return (o, v) {
reflect(o).setField(symbol, v);
return v;
};
}
}
Static Methods
dynamic stripTrailingNulls(List l) #
static stripTrailingNulls(List l) {
while (l.length > 0 && l.last == null) {
l.removeLast();
}
return l;
}
Methods
Function getter(String key) #
Function getter(String key) {
var symbol = new Symbol(key);
return (o) {
InstanceMirror instanceMirror = reflect(o);
try {
return instanceMirror.getField(symbol).reflectee;
} on NoSuchMethodError catch (e) {
var invokeClosure = _maybeInvoke(instanceMirror, symbol);
if (invokeClosure == null) {
rethrow;
}
return invokeClosure;
} on UnsupportedError catch (e) {
var invokeClosure = _maybeInvoke(instanceMirror, symbol);
if (invokeClosure == null) {
rethrow;
}
return invokeClosure;
}
};
}
Function setter(String key) #
Function setter(String key) {
var symbol = new Symbol(key);
return (o, v) {
reflect(o).setField(symbol, v);
return v;
};
}