aboutsummaryrefslogtreecommitdiff
path: root/node_modules/montage/core/core.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/montage/core/core.js')
-rwxr-xr-xnode_modules/montage/core/core.js32
1 files changed, 20 insertions, 12 deletions
diff --git a/node_modules/montage/core/core.js b/node_modules/montage/core/core.js
index 80597dce..26733c94 100755
--- a/node_modules/montage/core/core.js
+++ b/node_modules/montage/core/core.js
@@ -21,6 +21,7 @@ var ATTRIBUTE_PROPERTIES = "AttributeProperties",
21 PROTO = "__proto__", 21 PROTO = "__proto__",
22 VALUE = "value", 22 VALUE = "value",
23 ENUMERABLE = "enumerable", 23 ENUMERABLE = "enumerable",
24 DISTINCT = "distinct",
24 SERIALIZABLE = "serializable", 25 SERIALIZABLE = "serializable",
25 MODIFY = "modify"; 26 MODIFY = "modify";
26 27
@@ -63,10 +64,6 @@ Object.defineProperty(Montage, "create", {
63 64
64 var newObject = Object.create(typeof aPrototype === "undefined" ? this : aPrototype); 65 var newObject = Object.create(typeof aPrototype === "undefined" ? this : aPrototype);
65 66
66 if (newObject._dependenciesForProperty) {
67 newObject._dependencyListeners = {};
68 }
69
70 if (typeof newObject.didCreate === "function") { 67 if (typeof newObject.didCreate === "function") {
71 newObject.didCreate(); 68 newObject.didCreate();
72 } 69 }
@@ -80,7 +77,7 @@ Object.defineProperty(Montage, "create", {
80 } 77 }
81}); 78});
82 79
83var extendedPropertyAttributes = [SERIALIZABLE, MODIFY]; 80var extendedPropertyAttributes = [SERIALIZABLE];
84 81
85// Extended property attributes, the property name format is "_" + attributeName + "AttributeProperties" 82// Extended property attributes, the property name format is "_" + attributeName + "AttributeProperties"
86/** 83/**
@@ -112,13 +109,21 @@ extendedPropertyAttributes.forEach(function(name) {
112Object.defineProperty(Montage, "defineProperty", { 109Object.defineProperty(Montage, "defineProperty", {
113 110
114 value: function(obj, prop, descriptor) { 111 value: function(obj, prop, descriptor) {
115 var dependencies = descriptor.dependencies; 112
113 var dependencies = descriptor.dependencies,
114 isValueDescriptor = (VALUE in descriptor);
115
116 if (DISTINCT in descriptor && !isValueDescriptor) {
117 throw ("Cannot use distinct attribute on non-value property '" + prop + "'");
118 }
119
120
116 //reset defaults appropriately for framework. 121 //reset defaults appropriately for framework.
117 if (PROTO in descriptor) { 122 if (PROTO in descriptor) {
118 descriptor.__proto__ = (VALUE in descriptor ? (typeof descriptor.value === "function" ? _defaultFunctionValueProperty : _defaultObjectValueProperty) : _defaultAccessorProperty); 123 descriptor.__proto__ = (isValueDescriptor ? (typeof descriptor.value === "function" ? _defaultFunctionValueProperty : _defaultObjectValueProperty) : _defaultAccessorProperty);
119 } else { 124 } else {
120 var defaults; 125 var defaults;
121 if (VALUE in descriptor) { 126 if (isValueDescriptor) {
122 if (typeof descriptor.value === "function") { 127 if (typeof descriptor.value === "function") {
123 defaults = _defaultFunctionValueProperty; 128 defaults = _defaultFunctionValueProperty;
124 } else { 129 } else {
@@ -153,10 +158,6 @@ Object.defineProperty(Montage, "defineProperty", {
153 getAttributeProperties(obj, SERIALIZABLE)[prop] = descriptor.serializable; 158 getAttributeProperties(obj, SERIALIZABLE)[prop] = descriptor.serializable;
154 } 159 }
155 160
156 if (MODIFY in descriptor) {
157 getAttributeProperties(obj, MODIFY)[prop] = descriptor.modify;
158 }
159
160 //this is added to enable value properties with [] or Objects that are new for every instance 161 //this is added to enable value properties with [] or Objects that are new for every instance
161 if (descriptor.distinct === true && typeof descriptor.value === "object") { 162 if (descriptor.distinct === true && typeof descriptor.value === "object") {
162 (function(prop,internalProperty, value, obj) { 163 (function(prop,internalProperty, value, obj) {
@@ -587,6 +588,11 @@ Object.defineProperty(Object.prototype, "uuid", {
587 } 588 }
588}); 589});
589 590
591Montage.defineProperty(Montage, "identifier", {
592 value: null,
593 serializable: true
594});
595
590/** 596/**
591 Returns true if two objects are equal, otherwise returns false. 597 Returns true if two objects are equal, otherwise returns false.
592 @function module:montage/core/core.Montage#equals 598 @function module:montage/core/core.Montage#equals
@@ -599,6 +605,8 @@ Object.defineProperty(Montage, "equals", {
599 } 605 }
600}); 606});
601 607
608
609
602/* 610/*
603 * If it exists this method calls the method named with the identifier prefix. 611 * If it exists this method calls the method named with the identifier prefix.
604 * Example: If the name parameter is "shouldDoSomething" and the caller's identifier is "bob", then 612 * Example: If the name parameter is "shouldDoSomething" and the caller's identifier is "bob", then