var Factory = function () {}; var slice = Array.prototype.slice;
var augment = function (base, body) {
var uber = Factory.prototype = typeof base === "function" ? base.prototype : base; var prototype = new Factory(), properties = body.apply(prototype, slice.call(arguments, 2).concat(uber)); if (typeof properties === "object") for (var key in properties) prototype[key] = properties[key]; if (!prototype.hasOwnProperty("constructor")) return prototype; var constructor = prototype.constructor; constructor.prototype = prototype; return constructor;
};
augment.defclass = function (prototype) {
var constructor = prototype.constructor; constructor.prototype = prototype; return constructor;
};
augment.extend = function (base, body) {
return augment(base, function (uber) { this.uber = uber; return body; });
};
module.exports = augment;