Skip to content

Commit

Permalink
[experimental] metadata reflection api: add basic tests, fix arity, #152
Browse files Browse the repository at this point in the history
  • Loading branch information
zloirock committed Dec 31, 2015
1 parent 668c14a commit 167f993
Show file tree
Hide file tree
Showing 24 changed files with 645 additions and 28 deletions.
5 changes: 3 additions & 2 deletions library/modules/es7.reflect.delete-metadata.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ var metadata = require('./_metadata')
, getOrCreateMetadataMap = metadata.map
, store = metadata.store;

metadata.exp({deleteMetadata: function deleteMetadata(metadataKey, target, targetKey){
var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey = toMetaKey(targetKey), false);
metadata.exp({deleteMetadata: function deleteMetadata(metadataKey, target /*, targetKey */){
var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2])
, metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);
if(metadataMap === undefined || !metadataMap['delete'](metadataKey))return false;
if(metadataMap.size)return true;
var targetMetadata = store.get(target);
Expand Down
4 changes: 2 additions & 2 deletions library/modules/es7.reflect.get-metadata-keys.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ var ordinaryMetadataKeys = function(O, P){
return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;
};

metadata.exp({getMetadataKeys: function getMetadataKeys(target, targetKey){
return ordinaryMetadataKeys(anObject(target), toMetaKey(targetKey));
metadata.exp({getMetadataKeys: function getMetadataKeys(target /*, targetKey */){
return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));
}});
4 changes: 2 additions & 2 deletions library/modules/es7.reflect.get-metadata.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@ var ordinaryGetMetadata = function(MetadataKey, O, P){
return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;
};

metadata.exp({getMetadata: function getMetadata(metadataKey, target, targetKey){
return ordinaryGetMetadata(metadataKey, anObject(target), toMetaKey(targetKey));
metadata.exp({getMetadata: function getMetadata(metadataKey, target /*, targetKey */){
return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
}});
5 changes: 3 additions & 2 deletions library/modules/es7.reflect.get-own-matadata.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ var metadata = require('./_metadata')
, ordinaryGetOwnMetadata = metadata.get
, toMetaKey = metadata.key;

metadata.exp({getOwnMetadata: function getOwnMetadata(metadataKey, target, targetKey){
return ordinaryGetOwnMetadata(metadataKey, anObject(target), toMetaKey(targetKey));
metadata.exp({getOwnMetadata: function getOwnMetadata(metadataKey, target /*, targetKey */){
return ordinaryGetOwnMetadata(metadataKey, anObject(target)
, arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
}});
4 changes: 2 additions & 2 deletions library/modules/es7.reflect.get-own-metadata-keys.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ var metadata = require('./_metadata')
, ordinaryOwnMetadataKeys = metadata.keys
, toMetaKey = metadata.key;

metadata.exp({getOwnMetadataKeys: function getOwnMetadataKeys(target, targetKey){
return ordinaryOwnMetadataKeys(anObject(target), toMetaKey(targetKey));
metadata.exp({getOwnMetadataKeys: function getOwnMetadataKeys(target /*, targetKey */){
return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));
}});
4 changes: 2 additions & 2 deletions library/modules/es7.reflect.has-metadata.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@ var ordinaryHasMetadata = function(MetadataKey, O, P){
return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;
};

metadata.exp({hasMetadata: function hasMetadata(metadataKey, target, targetKey){
return ordinaryHasMetadata(metadataKey, anObject(target), toMetaKey(targetKey));
metadata.exp({hasMetadata: function hasMetadata(metadataKey, target /*, targetKey */){
return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
}});
5 changes: 3 additions & 2 deletions library/modules/es7.reflect.has-own-metadata.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ var metadata = require('./_metadata')
, ordinaryHasOwnMetadata = metadata.has
, toMetaKey = metadata.key;

metadata.exp({hasOwnMetadata: function hasOwnMetadata(metadataKey, target, targetKey){
return ordinaryHasOwnMetadata(metadataKey, anObject(target), toMetaKey(targetKey));
metadata.exp({hasOwnMetadata: function hasOwnMetadata(metadataKey, target /*, targetKey */){
return ordinaryHasOwnMetadata(metadataKey, anObject(target)
, arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
}});
5 changes: 3 additions & 2 deletions modules/es7.reflect.delete-metadata.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ var metadata = require('./_metadata')
, getOrCreateMetadataMap = metadata.map
, store = metadata.store;

metadata.exp({deleteMetadata: function deleteMetadata(metadataKey, target, targetKey){
var metadataMap = getOrCreateMetadataMap(anObject(target), targetKey = toMetaKey(targetKey), false);
metadata.exp({deleteMetadata: function deleteMetadata(metadataKey, target /*, targetKey */){
var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2])
, metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);
if(metadataMap === undefined || !metadataMap['delete'](metadataKey))return false;
if(metadataMap.size)return true;
var targetMetadata = store.get(target);
Expand Down
4 changes: 2 additions & 2 deletions modules/es7.reflect.get-metadata-keys.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ var ordinaryMetadataKeys = function(O, P){
return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;
};

metadata.exp({getMetadataKeys: function getMetadataKeys(target, targetKey){
return ordinaryMetadataKeys(anObject(target), toMetaKey(targetKey));
metadata.exp({getMetadataKeys: function getMetadataKeys(target /*, targetKey */){
return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));
}});
4 changes: 2 additions & 2 deletions modules/es7.reflect.get-metadata.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@ var ordinaryGetMetadata = function(MetadataKey, O, P){
return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;
};

metadata.exp({getMetadata: function getMetadata(metadataKey, target, targetKey){
return ordinaryGetMetadata(metadataKey, anObject(target), toMetaKey(targetKey));
metadata.exp({getMetadata: function getMetadata(metadataKey, target /*, targetKey */){
return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
}});
5 changes: 3 additions & 2 deletions modules/es7.reflect.get-own-matadata.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ var metadata = require('./_metadata')
, ordinaryGetOwnMetadata = metadata.get
, toMetaKey = metadata.key;

metadata.exp({getOwnMetadata: function getOwnMetadata(metadataKey, target, targetKey){
return ordinaryGetOwnMetadata(metadataKey, anObject(target), toMetaKey(targetKey));
metadata.exp({getOwnMetadata: function getOwnMetadata(metadataKey, target /*, targetKey */){
return ordinaryGetOwnMetadata(metadataKey, anObject(target)
, arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
}});
4 changes: 2 additions & 2 deletions modules/es7.reflect.get-own-metadata-keys.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ var metadata = require('./_metadata')
, ordinaryOwnMetadataKeys = metadata.keys
, toMetaKey = metadata.key;

metadata.exp({getOwnMetadataKeys: function getOwnMetadataKeys(target, targetKey){
return ordinaryOwnMetadataKeys(anObject(target), toMetaKey(targetKey));
metadata.exp({getOwnMetadataKeys: function getOwnMetadataKeys(target /*, targetKey */){
return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));
}});
4 changes: 2 additions & 2 deletions modules/es7.reflect.has-metadata.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,6 @@ var ordinaryHasMetadata = function(MetadataKey, O, P){
return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;
};

metadata.exp({hasMetadata: function hasMetadata(metadataKey, target, targetKey){
return ordinaryHasMetadata(metadataKey, anObject(target), toMetaKey(targetKey));
metadata.exp({hasMetadata: function hasMetadata(metadataKey, target /*, targetKey */){
return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
}});
5 changes: 3 additions & 2 deletions modules/es7.reflect.has-own-metadata.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ var metadata = require('./_metadata')
, ordinaryHasOwnMetadata = metadata.has
, toMetaKey = metadata.key;

metadata.exp({hasOwnMetadata: function hasOwnMetadata(metadataKey, target, targetKey){
return ordinaryHasOwnMetadata(metadataKey, anObject(target), toMetaKey(targetKey));
metadata.exp({hasOwnMetadata: function hasOwnMetadata(metadataKey, target /*, targetKey */){
return ordinaryHasOwnMetadata(metadataKey, anObject(target)
, arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
}});
Loading

0 comments on commit 167f993

Please sign in to comment.