execute method
Implementation
@override
Future<bool?> execute(
String caller, String propertyOrFunction, List<dynamic> arguments) async {
if (scope == null) return null;
var function = propertyOrFunction.toLowerCase().trim();
// template the first record
template ??= (data?.isEmpty ?? true)
? null
: Json.encode(Json.copy(data![0], withValues: false));
switch (function) {
// clear the list
case "clear":
return await clear(
start: toInt(elementAt(arguments, 0)),
end: toInt(elementAt(arguments, 1)));
// add element to the list
case "add":
case "insert":
var jsonOrXml = toStr(elementAt(arguments, 0)) ?? template;
return await insert(jsonOrXml, toInt(elementAt(arguments, 1)));
// add element to the list
case "copy":
return await copy(elementAt(arguments, 0), elementAt(arguments, 1));
// remove element from the list
case "delete":
case "remove":
return await delete(elementAt(arguments, 0));
// remove last element from the list
case "deletelast":
case "removelast":
return data != null ? await delete(data!.length - 1) : true;
// remove first element from the list
case "deletefirst":
case "removefirst":
return await delete(0);
// remove where
case "deletewhere":
case "removewhere":
// todo
return true;
// move element in the list
case "move":
return await move(elementAt(arguments, 0), elementAt(arguments, 1));
// foreach element in the list
case "foreach":
// todo
return true;
// reverse the list
case "reverse":
case "reversed":
return await reverse();
// notify
case "notify":
notify();
return true;
}
return super.execute(caller, propertyOrFunction, arguments);
}