| /* |
| Copyright (c) 2004-2006, The Dojo Foundation |
| All Rights Reserved. |
| |
| Licensed under the Academic Free License version 2.1 or above OR the |
| modified BSD license. For more information on Dojo licensing, see: |
| |
| http://dojotoolkit.org/community/licensing.shtml |
| */ |
| |
| |
| |
| dojo.provide("dojo.collections.Dictionary"); |
| dojo.require("dojo.collections.Collections"); |
| dojo.collections.Dictionary = function (dictionary) { |
| var items = {}; |
| this.count = 0; |
| var testObject = {}; |
| this.add = function (k, v) { |
| var b = (k in items); |
| items[k] = new dojo.collections.DictionaryEntry(k, v); |
| if (!b) { |
| this.count++; |
| } |
| }; |
| this.clear = function () { |
| items = {}; |
| this.count = 0; |
| }; |
| this.clone = function () { |
| return new dojo.collections.Dictionary(this); |
| }; |
| this.contains = this.containsKey = function (k) { |
| if (testObject[k]) { |
| return false; |
| } |
| return (items[k] != null); |
| }; |
| this.containsValue = function (v) { |
| var e = this.getIterator(); |
| while (e.get()) { |
| if (e.element.value == v) { |
| return true; |
| } |
| } |
| return false; |
| }; |
| this.entry = function (k) { |
| return items[k]; |
| }; |
| this.forEach = function (fn, scope) { |
| var a = []; |
| for (var p in items) { |
| if (!testObject[p]) { |
| a.push(items[p]); |
| } |
| } |
| var s = scope || dj_global; |
| if (Array.forEach) { |
| Array.forEach(a, fn, s); |
| } else { |
| for (var i = 0; i < a.length; i++) { |
| fn.call(s, a[i], i, a); |
| } |
| } |
| }; |
| this.getKeyList = function () { |
| return (this.getIterator()).map(function (entry) { |
| return entry.key; |
| }); |
| }; |
| this.getValueList = function () { |
| return (this.getIterator()).map(function (entry) { |
| return entry.value; |
| }); |
| }; |
| this.item = function (k) { |
| if (k in items) { |
| return items[k].valueOf(); |
| } |
| return undefined; |
| }; |
| this.getIterator = function () { |
| return new dojo.collections.DictionaryIterator(items); |
| }; |
| this.remove = function (k) { |
| if (k in items && !testObject[k]) { |
| delete items[k]; |
| this.count--; |
| return true; |
| } |
| return false; |
| }; |
| if (dictionary) { |
| var e = dictionary.getIterator(); |
| while (e.get()) { |
| this.add(e.element.key, e.element.value); |
| } |
| } |
| }; |
| |