blob: a6fec88388651b9ef37df9d8a032edd5eb6520de [file] [log] [blame]
/*
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);
}
}
};