g2
g2 copied to clipboard
'ins' command should accept 'g2' objects
It is implemented by
ins(arg) {
return typeof arg === 'function' ? (arg(this) || this) // no further processing by handler ...
: typeof arg === 'object' ? ( this.commands.push({a:arg}), this ) // no explicit command name .. !
: this;
},
and
async exe(commands) {
for (let cmd of commands) {
if (cmd.c && this[cmd.c]) { // explicit command name .. !
const rx = this[cmd.c](cmd.a);
if (rx && rx instanceof Promise) {
await rx;
}
} else if (cmd.a) { // should be from 'ins' command
if (cmd.a.commands) // cmd.a is a `g2` object, so directly execute its commands array.
this.exe(cmd.a.commands);
if (cmd.a.g2) // cmd.a is an object offering a `g2` method, so call it and execute its returned commands array.
this.exe(cmd.a.g2().commands);
}
}
},
Please add and test.