123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- /*
- Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
- */
- 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);
- }
- }
- };
- }
|