123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- (function() {
- var ExcludedClassProperties, ExcludedPrototypeProperties, Mixin, name;
- module.exports = Mixin = (function() {
- Mixin.includeInto = function(constructor) {
- var name, value, _ref;
- this.extend(constructor.prototype);
- for (name in this) {
- value = this[name];
- if (ExcludedClassProperties.indexOf(name) === -1) {
- if (!constructor.hasOwnProperty(name)) {
- constructor[name] = value;
- }
- }
- }
- return (_ref = this.included) != null ? _ref.call(constructor) : void 0;
- };
- Mixin.extend = function(object) {
- var name, _i, _len, _ref, _ref1;
- _ref = Object.getOwnPropertyNames(this.prototype);
- for (_i = 0, _len = _ref.length; _i < _len; _i++) {
- name = _ref[_i];
- if (ExcludedPrototypeProperties.indexOf(name) === -1) {
- if (!object.hasOwnProperty(name)) {
- object[name] = this.prototype[name];
- }
- }
- }
- return (_ref1 = this.prototype.extended) != null ? _ref1.call(object) : void 0;
- };
- function Mixin() {
- if (typeof this.extended === "function") {
- this.extended();
- }
- }
- return Mixin;
- })();
- ExcludedClassProperties = ['__super__'];
- for (name in Mixin) {
- ExcludedClassProperties.push(name);
- }
- ExcludedPrototypeProperties = ['constructor', 'extended'];
- }).call(this);
|