]> git.pond.sub.org Git - eow/blobdiff - static/dojo-release-1.1.1/dojox/collections/Dictionary.js
add Dojo 1.1.1
[eow] / static / dojo-release-1.1.1 / dojox / collections / Dictionary.js
diff --git a/static/dojo-release-1.1.1/dojox/collections/Dictionary.js b/static/dojo-release-1.1.1/dojox/collections/Dictionary.js
new file mode 100644 (file)
index 0000000..8213790
--- /dev/null
@@ -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);
+               }
+       }
+};
+
+}