Sha256: 67894b2322dc68ef1e2d927ba266cdea647a421568c598d4f6837e75fb5b2569

Contents?: true

Size: 1.29 KB

Versions: 25

Compression:

Stored size: 1.29 KB

Contents

(function(can, window, undefined){

// tests if we can get super in .toString()
	var isFunction = can.isFunction,
		
		fnTest = /xyz/.test(function() {
			xyz;
		}) ? /\b_super\b/ : /.*/;
		
		// overwrites a single property so it can still call super
		can.Construct._overwrite = function(addTo, base, name, val){
			// Check if we're overwriting an existing function
			addTo[name] = isFunction(val) && 
							  isFunction(base[name]) && 
							  fnTest.test(val) ? (function( name, fn ) {
					return function() {
						var tmp = this._super,
							ret;

						// Add a new ._super() method that is the same method
						// but on the super-class
						this._super = base[name];

						// The method only need to be bound temporarily, so we
						// remove it when we're done executing
						ret = fn.apply(this, arguments);
						this._super = tmp;
						return ret;
					};
				})(name, val) : val;
		}
		// overwrites an object with methods, sets up _super
		//   newProps - new properties
		//   oldProps - where the old properties might be
		//   addTo - what we are adding to
		can.Construct._inherit = function( newProps, oldProps, addTo ) {
			addTo = addTo || newProps
			for ( var name in newProps ) {
				can.Construct._overwrite(addTo, oldProps, name, newProps[name]);
			}
		}


})(this.can, this )

Version data entries

25 entries across 13 versions & 2 rubygems

Version Path
rmails-0.2.5 vendor/assets/javascripts/canjs/can.construct.super.js
rmails-0.2.5 app/assets/javascripts/canjs/can.construct.super.js
rmails-0.2.4 app/assets/javascripts/canjs/can.construct.super.js
rmails-0.2.4 vendor/assets/javascripts/canjs/can.construct.super.js
rmails-0.2.3 app/assets/javascripts/canjs/can.construct.super.js
rmails-0.2.3 vendor/assets/javascripts/canjs/can.construct.super.js
rmails-0.2.2 vendor/assets/javascripts/canjs/can.construct.super.js
rmails-0.2.2 app/assets/javascripts/canjs/can.construct.super.js
rmails-0.2.1 vendor/assets/javascripts/canjs/can.construct.super.js
rmails-0.2.1 app/assets/javascripts/canjs/can.construct.super.js
rmails-0.2.0 vendor/assets/javascripts/canjs/can.construct.super.js
rmails-0.2.0 app/assets/javascripts/canjs/can.construct.super.js
rmails-0.1.6 vendor/assets/javascripts/canjs/can.construct.super.js
rmails-0.1.6 app/assets/javascripts/canjs/can.construct.super.js
rmails-0.1.5 vendor/assets/javascripts/canjs/can.construct.super.js
rmails-0.1.5 app/assets/javascripts/canjs/can.construct.super.js
rmails-0.1.4 vendor/assets/javascripts/canjs/can.construct.super.js
rmails-0.1.4 app/assets/javascripts/canjs/can.construct.super.js
rmails-0.1.3 app/assets/javascripts/canjs/can.construct.super.js
rmails-0.1.3 vendor/assets/javascripts/canjs/can.construct.super.js