| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | // Generated by CoffeeScript 1.6.3var classic,  __slice = [].slice;module.exports = classic = {};classic.implement = function() {  var classProto, classReference, desc, member, mixin, mixins, _i, _j, _len;  mixins = 2 <= arguments.length ? __slice.call(arguments, 0, _i = arguments.length - 1) : (_i = 0, []), classReference = arguments[_i++];  for (_j = 0, _len = mixins.length; _j < _len; _j++) {    mixin = mixins[_j];    classProto = classReference.prototype;    for (member in mixin.prototype) {      if (!Object.getOwnPropertyDescriptor(classProto, member)) {        desc = Object.getOwnPropertyDescriptor(mixin.prototype, member);        Object.defineProperty(classProto, member, desc);      }    }  }  return classReference;};classic.mix = function() {  var classProto, classReference, desc, member, mixin, mixins, _i, _j, _len;  mixins = 2 <= arguments.length ? __slice.call(arguments, 0, _i = arguments.length - 1) : (_i = 0, []), classReference = arguments[_i++];  classProto = classReference.prototype;  classReference.__mixinCloners = [];  classReference.__applyClonersFor = function(instance, args) {    var cloner, _j, _len, _ref;    if (args == null) {      args = null;    }    _ref = classReference.__mixinCloners;    for (_j = 0, _len = _ref.length; _j < _len; _j++) {      cloner = _ref[_j];      cloner.apply(instance, args);    }  };  classReference.__mixinInitializers = [];  classReference.__initMixinsFor = function(instance, args) {    var initializer, _j, _len, _ref;    if (args == null) {      args = null;    }    _ref = classReference.__mixinInitializers;    for (_j = 0, _len = _ref.length; _j < _len; _j++) {      initializer = _ref[_j];      initializer.apply(instance, args);    }  };  classReference.__mixinQuitters = [];  classReference.__applyQuittersFor = function(instance, args) {    var quitter, _j, _len, _ref;    if (args == null) {      args = null;    }    _ref = classReference.__mixinQuitters;    for (_j = 0, _len = _ref.length; _j < _len; _j++) {      quitter = _ref[_j];      quitter.apply(instance, args);    }  };  for (_j = 0, _len = mixins.length; _j < _len; _j++) {    mixin = mixins[_j];    if (!(mixin.constructor instanceof Function)) {      throw Error("Mixin should be a function");    }    for (member in mixin.prototype) {      if (member.substr(0, 11) === '__initMixin') {        classReference.__mixinInitializers.push(mixin.prototype[member]);        continue;      } else if (member.substr(0, 11) === '__clonerFor') {        classReference.__mixinCloners.push(mixin.prototype[member]);        continue;      } else if (member.substr(0, 12) === '__quitterFor') {        classReference.__mixinQuitters.push(mixin.prototype[member]);        continue;      }      if (!Object.getOwnPropertyDescriptor(classProto, member)) {        desc = Object.getOwnPropertyDescriptor(mixin.prototype, member);        Object.defineProperty(classProto, member, desc);      }    }  }  return classReference;};
 |