Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

MediaWiki:Gadget-polyfill.js: Difference between revisions

MediaWiki interface page
Content added Content deleted
mNo edit summary
No edit summary
Line 40: Line 40:


Object.preventExtensions(PrimitiveSet.prototype);
Object.preventExtensions(PrimitiveSet.prototype);

window.pswiki.polyfill.PrimitiveSet = PrimitiveSet;

Revision as of 07:07, 21 December 2021

function PrimitiveSet() {
	this.data = {};
	this.counter = 0;
}

PrimitiveSet.prototype.add = function(val) {
	if (!this.data.hasOwnProperty(val)) {
		this.data[val] = this.counter;
		this.counter++;
	}
};

PrimitiveSet.prototype.clear = function() {
	this.data = {};
	this.counter = 0;
};

PrimitiveSet.prototype.delete = function( val ) {
	delete this.data[val];
};

PrimitiveSet.prototype.has = function( val ) {
	return val in this.data;
};

PrimitiveSet.prototype.values = function() {
	var key_vals = [];
	for (var key in this.data) {
		key_vals.push( { key: key, value: this.data[key] } );
	}
	
	key_vals.sort( function( left, right ) {
		return left.value - right.value;
	} );
	
	return key_vals.map( function( key_val ) {
		return key_val.key;
	} ); 
};

Object.preventExtensions(PrimitiveSet.prototype);

window.pswiki.polyfill.PrimitiveSet = PrimitiveSet;
Cookies help us deliver our services. By using our services, you agree to our use of cookies.