New file |
0,0 → 1,116 |
if(!dojo._hasResource["dojox.collections.Dictionary"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. |
dojo._hasResource["dojox.collections.Dictionary"] = true; |
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); |
} |
} |
}; |
|
} |