Sha256: 23624f1017792f8bcc547981ca1636d8b691864a787f64464700eca2463b5bb0
Contents?: true
Size: 900 Bytes
Versions: 22
Compression:
Stored size: 900 Bytes
Contents
'use strict'; class Mixin { constructor(host) { const originalMethods = {}; const overriddenMethods = this._getOverriddenMethods(this, originalMethods); for (const key of Object.keys(overriddenMethods)) { if (typeof overriddenMethods[key] === 'function') { originalMethods[key] = host[key]; host[key] = overriddenMethods[key]; } } } _getOverriddenMethods() { throw new Error('Not implemented'); } } Mixin.install = function(host, Ctor, opts) { if (!host.__mixins) { host.__mixins = []; } for (let i = 0; i < host.__mixins.length; i++) { if (host.__mixins[i].constructor === Ctor) { return host.__mixins[i]; } } const mixin = new Ctor(host, opts); host.__mixins.push(mixin); return mixin; }; module.exports = Mixin;
Version data entries
22 entries across 22 versions & 2 rubygems