can-reflect
Advanced tools
Comparing version 0.0.1 to 0.0.2
{ | ||
"name": "can-reflect", | ||
"version": "0.0.1", | ||
"version": "0.0.2", | ||
"description": "reflection on unknown data types", | ||
@@ -5,0 +5,0 @@ "homepage": "http://canjs.com", |
var canSymbol = require("can-symbol"); | ||
var typeReflections = require("../type/type"); | ||
var setKeyValueSymbol = canSymbol.for("can.setKeyValue"), | ||
getKeyValueSymbol = canSymbol.for("can.getKeyValue"), | ||
getValueSymbol = canSymbol.for("can.getValue"), | ||
setValueSymbol = canSymbol.for("can.setValue"); | ||
var reflections = { | ||
setKeyValue: function(obj, key, value){ | ||
var setKeyValue = obj[canSymbol.for("can.setKeyValue")]; | ||
if(typeof key === "symbol") { | ||
obj[key] = value; | ||
return; | ||
} | ||
var setKeyValue = obj[setKeyValueSymbol]; | ||
if(setKeyValue) { | ||
return setKeyValue.call(obj, key, value); | ||
} | ||
if(typeReflections.isSymbolLike(key) && typeof key !== "symbol") { | ||
} else if( typeof key !== "symbol" && typeReflections.isSymbolLike(key) ) { | ||
Object.defineProperty(obj, key, { | ||
@@ -23,3 +31,3 @@ enumerable: false, | ||
getKeyValue: function(obj, key) { | ||
var getKeyValue = obj[canSymbol.for("can.getKeyValue")]; | ||
var getKeyValue = obj[getKeyValueSymbol]; | ||
if(getKeyValue) { | ||
@@ -41,3 +49,3 @@ return getKeyValue.call(obj, key); | ||
} | ||
var getValue = value[canSymbol.for("can.getValue")]; | ||
var getValue = value[getValueSymbol]; | ||
if(getValue) { | ||
@@ -49,3 +57,3 @@ return getValue.call(value); | ||
setValue: function(item, value){ | ||
var setValue = item && item[canSymbol.for("can.setValue")]; | ||
var setValue = item && item[setValueSymbol]; | ||
if(setValue) { | ||
@@ -52,0 +60,0 @@ return setValue.call(item, value); |
@@ -6,6 +6,6 @@ var canSymbol = require("can-symbol"); | ||
function makeFallback(symbolName, fallbackName) { | ||
return function(obj){ | ||
return function(obj, event, handler){ | ||
var method = obj[canSymbol.for(symbolName)]; | ||
if(method !== undefined) { | ||
return method.apply(obj, slice.call(arguments, 1)); | ||
return method.call(obj, event, handler); | ||
} | ||
@@ -17,6 +17,6 @@ return this[fallbackName].apply(this, arguments); | ||
function makeErrorIfMissing(symbolName, errorMessage){ | ||
return function(obj){ | ||
return function(obj, arg1, arg2){ | ||
var method = obj[canSymbol.for(symbolName)]; | ||
if(method !== undefined) { | ||
return method.apply(obj, slice.call(arguments, 1)); | ||
return method.call(obj, arg1, arg2); | ||
} | ||
@@ -58,3 +58,3 @@ throw new Error(errorMessage); | ||
if(onEvent !== undefined) { | ||
return onEvent.apply(obj, slice.call(arguments, 1)); | ||
return onEvent.call(obj, eventName, callback); | ||
} else if(obj.addEventListener) { | ||
@@ -69,3 +69,3 @@ obj.addEventListener(eventName, callback); | ||
if(offEvent !== undefined) { | ||
return offEvent.apply(obj, slice.call(arguments, 1)); | ||
return offEvent.call(obj, eventName, callback); | ||
} else if(obj.removeEventListener) { | ||
@@ -72,0 +72,0 @@ obj.removeEventListener(eventName, callback); |
38515
952