Subversion Repositories Applications.papyrus

Rev

Rev 1372 | Blame | Last modification | View Log | RSS feed

/*
        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);
                }
        }
};