0byt3m1n1
Path:
/
data
/
applications
/
aps
/
tikiwiki
/
3.2.0-5
/
standard
/
htdocs
/
lib
/
mootools
/
src
/
Plugins
/
[
Home
]
File: Hash.js
/* Script: Hash.js Contains the class Hash. License: MIT-style license. */ /* Class: Hash It wraps an object that it uses internally as a map. The user must use set(), get(), and remove() to add/change, retrieve and remove values, it must not access the internal object directly. null/undefined values are allowed. Note: Each hash instance has the length property. Arguments: obj - an object to convert into a Hash instance. Example: (start code) var hash = new Hash({a: 'hi', b: 'world', c: 'howdy'}); hash.remove('b'); // b is removed. hash.set('c', 'hello'); hash.get('c'); // returns 'hello' hash.length // returns 2 (a and c) (end) */ var Hash = new Class({ length: 0, initialize: function(object){ this.obj = object || {}; this.setLength(); }, /* Property: get Retrieves a value from the hash. Arguments: key - The key Returns: The value */ get: function(key){ return (this.hasKey(key)) ? this.obj[key] : null; }, /* Property: hasKey Check the presence of a specified key-value pair in the hash. Arguments: key - The key Returns: True if the Hash contains a value for the specified key, otherwise false */ hasKey: function(key){ return (key in this.obj); }, /* Property: set Adds a key-value pair to the hash or replaces a previous value associated with the key. Arguments: key - The key value - The value */ set: function(key, value){ if (!this.hasKey(key)) this.length++; this.obj[key] = value; return this; }, setLength: function(){ this.length = 0; for (var p in this.obj) this.length++; return this; }, /* Property: remove Removes a key-value pair from the hash. Arguments: key - The key */ remove: function(key){ if (this.hasKey(key)){ delete this.obj[key]; this.length--; } return this; }, /* Property: each Calls a function for each key-value pair. The first argument passed to the function will be the value, the second one will be the key, like $each. Arguments: fn - The function to call for each key-value pair bind - Optional, the object that will be referred to as "this" in the function */ each: function(fn, bind){ $each(this.obj, fn, bind); }, /* Property: extend Extends the current hash with an object containing key-value pairs. Values for duplicate keys will be replaced by the new ones. Arguments: obj - An object containing key-value pairs */ extend: function(obj){ $extend(this.obj, obj); return this.setLength(); }, /* Property: merge Merges the current hash with multiple objects. */ merge: function(){ this.obj = $merge.apply(null, [this.obj].extend(arguments)); return this.setLength(); }, /* Property: empty Empties all hash values properties and values. */ empty: function(){ this.obj = {}; this.length = 0; return this; }, /* Property: keys Returns an array containing all the keys, in the same order as the values returned by <Hash.values>. Returns: An array containing all the keys of the hash */ keys: function(){ var keys = []; for (var property in this.obj) keys.push(property); return keys; }, /* Property: values Returns an array containing all the values, in the same order as the keys returned by <Hash.keys>. Returns: An array containing all the values of the hash */ values: function(){ var values = []; for (var property in this.obj) values.push(this.obj[property]); return values; } }); /* Section: Utility Functions */ /* Function: $H Shortcut to create a Hash from an Object. */ function $H(obj){ return new Hash(obj); };