8398c9048d
code was modified slightly, so the code differs from the original downloadable 1.9.5 version
112 lines
3 KiB
JavaScript
112 lines
3 KiB
JavaScript
dojo.provide("dojox.collections.Dictionary");
|
|
dojo.require("dojox.collections._base");
|
|
|
|
dojox.collections.Dictionary=function(/* dojox.collections.Dictionary? */dictionary){
|
|
// summary
|
|
// Returns an object of type dojox.collections.Dictionary
|
|
var items={};
|
|
this.count=0;
|
|
|
|
// comparator for property addition and access.
|
|
var testObject={};
|
|
|
|
this.add=function(/* string */k, /* object */v){
|
|
// summary
|
|
// Add a new item to the Dictionary.
|
|
var b=(k in items);
|
|
items[k]=new dojox.collections.DictionaryEntry(k,v);
|
|
if(!b){
|
|
this.count++;
|
|
}
|
|
};
|
|
this.clear=function(){
|
|
// summary
|
|
// Clears the internal dictionary.
|
|
items={};
|
|
this.count=0;
|
|
};
|
|
this.clone=function(){
|
|
// summary
|
|
// Returns a new instance of dojox.collections.Dictionary; note the the dictionary is a clone but items might not be.
|
|
return new dojox.collections.Dictionary(this); // dojox.collections.Dictionary
|
|
};
|
|
this.contains=this.containsKey=function(/* string */k){
|
|
// summary
|
|
// Check to see if the dictionary has an entry at key "k".
|
|
if(testObject[k]){
|
|
return false; // bool
|
|
}
|
|
return (items[k]!=null); // bool
|
|
};
|
|
this.containsValue=function(/* object */v){
|
|
// summary
|
|
// Check to see if the dictionary has an entry with value "v".
|
|
var e=this.getIterator();
|
|
while(e.get()){
|
|
if(e.element.value==v){
|
|
return true; // bool
|
|
}
|
|
}
|
|
return false; // bool
|
|
};
|
|
this.entry=function(/* string */k){
|
|
// summary
|
|
// Accessor method; similar to dojox.collections.Dictionary.item but returns the actual Entry object.
|
|
return items[k]; // dojox.collections.DictionaryEntry
|
|
};
|
|
this.forEach=function(/* function */ fn, /* object? */ scope){
|
|
// summary
|
|
// functional iterator, following the mozilla spec.
|
|
var a=[]; // Create an indexing array
|
|
for(var p in items) {
|
|
if(!testObject[p]){
|
|
a.push(items[p]); // fill it up
|
|
}
|
|
}
|
|
dojo.forEach(a, fn, scope);
|
|
};
|
|
this.getKeyList=function(){
|
|
// summary
|
|
// Returns an array of the keys in the dictionary.
|
|
return (this.getIterator()).map(function(entry){
|
|
return entry.key;
|
|
}); // array
|
|
};
|
|
this.getValueList=function(){
|
|
// summary
|
|
// Returns an array of the values in the dictionary.
|
|
return (this.getIterator()).map(function(entry){
|
|
return entry.value;
|
|
}); // array
|
|
};
|
|
this.item=function(/* string */k){
|
|
// summary
|
|
// Accessor method.
|
|
if(k in items){
|
|
return items[k].valueOf(); // object
|
|
}
|
|
return undefined; // object
|
|
};
|
|
this.getIterator=function(){
|
|
// summary
|
|
// Gets a dojox.collections.DictionaryIterator for iteration purposes.
|
|
return new dojox.collections.DictionaryIterator(items); // dojox.collections.DictionaryIterator
|
|
};
|
|
this.remove=function(/* string */k){
|
|
// summary
|
|
// Removes the item at k from the internal collection.
|
|
if(k in items && !testObject[k]){
|
|
delete items[k];
|
|
this.count--;
|
|
return true; // bool
|
|
}
|
|
return false; // bool
|
|
};
|
|
|
|
if (dictionary){
|
|
var e=dictionary.getIterator();
|
|
while(e.get()) {
|
|
this.add(e.element.key, e.element.value);
|
|
}
|
|
}
|
|
};
|