node_terminus
Version:
Pantheon Terminus cli wrapper and extensions
49 lines (41 loc) • 966 B
JavaScript
// Class for creating multi inheritance.
class multi
{
// Inherit method to create base classes.
static inherit(..._bases)
{
class classes {
// The base classes
get base() { return _bases; }
constructor(..._args)
{
var index = 0;
for (let b of this.base)
{
let obj = new b(_args[index++]);
multi.copy(this, obj);
}
}
}
// Copy over properties and methods
for (let base of _bases)
{
multi.copy(classes, base);
multi.copy(classes.prototype, base.prototype);
}
return classes;
}
// Copies the properties from one class to another
static copy(_target, _source)
{
for (let key of Reflect.ownKeys(_source))
{
if (key !== "constructor" && key !== "prototype" && key !== "name")
{
let desc = Object.getOwnPropertyDescriptor(_source, key);
Object.defineProperty(_target, key, desc);
}
}
}
}
module.exports = multi