thirdparty/jsdoctoolkit/app/frame/Hash.js
author Mario Ferraro <fadinlight@gmail.com>
Sun, 15 Nov 2009 22:12:20 +0100
changeset 3093 d1be59b6b627
parent 3041 c8f47f0b6697
permissions -rw-r--r--
GMaps related JS changed to use new google namespace. Google is going to change permanently in the future the way to load its services, so better stay safe. Also this commit shows uses of the new melange.js module. Fixes Issue 634.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3041
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
     1
/**
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
     2
	@constructor
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
     3
	@example
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
     4
	var _index = new Hash();
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
     5
	_index.set("a", "apple");
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
     6
	_index.set("b", "blue");
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
     7
	_index.set("c", "coffee");
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
     8
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
     9
	for (var p = _index.first(); p; p = _index.next()) {
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    10
		print(p.key+" is for "+p.value);
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    11
	}
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    12
	
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    13
 */
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    14
var Hash = function() {
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    15
	this._map = {};
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    16
	this._keys = [];
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    17
	this._vals = [];
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    18
	this.reset();
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    19
}
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    20
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    21
Hash.prototype.set = function(k, v) {
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    22
	if (k != "") {
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    23
		this._keys.push(k);
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    24
		this._map["="+k] = this._vals.length;
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    25
		this._vals.push(v);
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    26
	}
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    27
}
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    28
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    29
Hash.prototype.replace = function(k, k2, v) {
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    30
	if (k == k2) return;
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    31
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    32
	var offset = this._map["="+k];
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    33
	this._keys[offset] = k2;
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    34
	if (typeof v != "undefined") this._vals[offset] = v;
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    35
	this._map["="+k2] = offset;
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    36
	delete(this._map["="+k]);
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    37
}
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    38
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    39
Hash.prototype.drop = function(k) {
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    40
	if (k != "") {
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    41
		var offset = this._map["="+k];
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    42
		this._keys.splice(offset, 1);
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    43
		this._vals.splice(offset, 1);
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    44
		delete(this._map["="+k]);
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    45
		for (var p in this._map) {
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    46
			if (this._map[p] >= offset) this._map[p]--;
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    47
		}
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    48
		if (this._cursor >= offset && this._cursor > 0) this._cursor--;
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    49
	}
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    50
}
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    51
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    52
Hash.prototype.get = function(k) {
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    53
	if (k != "") {
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    54
		return this._vals[this._map["="+k]];
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    55
	}
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    56
}
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    57
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    58
Hash.prototype.keys = function() {
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    59
	return this._keys;
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    60
}
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    61
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    62
Hash.prototype.hasKey = function(k) {
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    63
	if (k != "") {
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    64
		return (typeof this._map["="+k] != "undefined");
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    65
	}
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    66
}
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    67
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    68
Hash.prototype.values = function() {
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    69
	return this._vals;
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    70
}
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    71
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    72
Hash.prototype.reset = function() {
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    73
	this._cursor = 0;
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    74
}
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    75
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    76
Hash.prototype.first = function() {
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    77
	this.reset();
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    78
	return this.next();
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    79
}
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    80
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    81
Hash.prototype.next = function() {
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    82
	if (this._cursor++ < this._keys.length)
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    83
		return {key: this._keys[this._cursor-1], value: this._vals[this._cursor-1]};
c8f47f0b6697 JSDocToolkit 2.3.0 added to create documentation for JS files.
Mario Ferraro <fadinlight@gmail.com>
parents:
diff changeset
    84
}