Guest User

Untitled

a guest
Jul 31st, 2012
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // merge policy function
  2.  
  3.     fluid.registerNamespace("decapod.modelReplacementComponent");
  4.    
  5.     decapod.modelReplacementComponent.extend = function (target, source) {
  6.         target = target || {};
  7.         if (fluid.isArrayable(target)) {
  8.             target = typeof(source) !== "undefined" ? source : target;
  9.         } else {
  10.             for (var key in source) {
  11.                 if (typeof(target[key]) === "object" ) {
  12.                     target[key] = decapod.modelReplacementComponent.extend(target[key], source[key]);
  13.                 } else {
  14.                     if (typeof(source[key]) !== "undefined") {
  15.                         target[key] = source[key];
  16.                     }
  17.                 }
  18.             }
  19.         }
  20.  
  21.         return target;
  22.     };
  23.    
  24.     decapod.modelReplacementComponent.mergeModel = function (target, source) {
  25.         if (!fluid.isPrimitive(target)) {
  26.             return decapod.modelReplacementComponent.extend(target, source);
  27.         }
  28.     };
  29.    
  30.     fluid.defaults("decapod.modelReplacementComponent", {
  31.         gradeNames: ["fluid.viewComponent", "autoInit"],
  32.         mergePolicy: {
  33.             model: decapod.modelReplacementComponent.mergeModel
  34.         }
  35.     });
  36.  
  37.  
  38. // Test code below
  39. var newModel = {
  40.                     a: "A",
  41.                     b: ["C"]
  42.             };
  43.             fluid.defaults("decapod.test.overideModel", {
  44.                 gradeNames: ["decapod.modelReplacementComponent", "autoInit"],
  45.                 model: {
  46.                     a: "a",
  47.                     b: ["c", "d"]
  48.                 }
  49.             });
  50.            
  51.             var that = decapod.test.overideModel(".dc-test", {
  52.                 model: fluid.copy(newModel)
  53.             });
  54.            
  55.             jqUnit.assertDeepEq("The model should be overridden.", newModel, that.model);
Advertisement
Add Comment
Please, Sign In to add comment