UNPKG

todomvc

Version:

> Helping you select an MV\* framework

54 lines (47 loc) 1.54 kB
/*! * CanJS - 2.0.3 * http://canjs.us/ * Copyright (c) 2013 Bitovi * Tue, 26 Nov 2013 18:21:22 GMT * Licensed MIT * Includes: CanJS default build * Download from: http://canjs.us/ */ define(["can/util/library", "can/construct"], function(can, Construct){ // 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]); } } return can; });