You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							86 lines
						
					
					
						
							3.0 KiB
						
					
					
				
			
		
		
	
	
							86 lines
						
					
					
						
							3.0 KiB
						
					
					
				// Generated by CoffeeScript 1.6.3 | 
						|
var 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; | 
						|
};
 | 
						|
 |