<commit_before>/**
 * Widgets pour le webos.
* @author $imon <<EMAIL>>
* @version 1.0
* @since 1.0
*/

/*
* Objet servant a gerer les widgets sur le webos.
*/
$.webos = {};
/*
* Proprietes des widgets.
*/
$.webos.properties = {};
/*
* Liste des proprietes des widgets.
*/
$.webos.properties.list = {};
/**
* Recuperer les proprietes d'un widget.
* @param string widget Le nom du widget.
* @return object
*/
$.webos.properties.get = function(widget) {
	if (typeof $.webos.properties.list[widget] == 'undefined') {
		return {};
	}
	
	return $.webos.properties.list[widget];
};
/**
* Declarer un widget.
* @param string widget Le nom du widget.
* @param object|string arg1 Les proprietes du widget. Si est le nom d'un widget, le nouveau widget heritera de celui-ci.
* @param object arg2 Si arg1 est le nom d'un widget, arg2 sera les proprietes du widget.
*/
$.webos.widget = function(widget, arg1, arg2) {
	var properties;
	if (typeof arg2 != 'undefined') {
		properties = $.webos.extend($.webos.properties.get(arg1), arg2);
	} else {
		properties = arg1;
	}
	$.webos.properties.list[widget] = properties;
	
	$.widget('weboswidgets.'+widget, properties);
};
var widgetProperties = {
	_name: 'widget',
	options: {
		id: 0,
		pid: null
	},
	_create: function() {
		this.options.id = $.webos.widgets.push(this.element) - 1;
		if (typeof Webos.Process.current() != 'undefined') {
			this.options.pid = Webos.Process.current().getPid();
		}
		this.element.addClass('webos-'+this._name);
		this.element.attr('id', 'webos-widget-'+this.options.id);
	},
	id: function() {
		return this.options.id;
	},
	pid: function() {
		return this.options.pid;
	},
	destroy: function() {
		this._destroy();
		delete $.webos.widgets[this.options.id];
		$.Widget.prototype.destroy.call(this);
	},
	_destroy: function() {},
	_setOption: function(key, value) {
		this.options[key] = value;
		this._update(key, value);
	},
	selector: function() {
		return '#'+this.element.attr('id');
	},
	_update: function() {}
};
$.webos.widget('widget', widgetProperties);
$.webos.widgets = [];
$.webos.getWidgets = function() {
	return $.webos.widgets;
};
$.webos.extend = function(parent, child) {
	child = $.extend(true, {}, parent, child);
	child._parent = function() {
		return parent;
	};
	var reportMethods = function(parentMethod, childMethod) {
		return function() {
			var args = new Array();
			for (var i = 0; i < arguments.length; i++) {
				args.push(arguments[i]);
			}
			parentMethod.apply(this, args);
			return childMethod.apply(this, args);
		};
	};
	for (var attr in child) {
		if (typeof child[attr] == 'function' && typeof parent[attr] == 'function') {
			child[attr] = reportMethods(parent[attr], child[attr]);
		}
		if (child[attr] instanceof Array && parent[attr] instanceof Array) {
			child[attr] = parent[attr].concat(child[attr]);
		}
	}
	return child;
};
/**
* @todo Enlever les widgets crees par le processus.
*/
$.webos.stopProcess = function(proc) {
	var widgets = $.webos.getWidgets();
	for (var i = 0; i < widgets.length; i++) {
		//On enleve les widgets crees par le processus correspondant.
		// ...
		// Not yet implemented
	}
};

//Container
var containerProperties = $.webos.extend($.webos.properties.get('widget'), {
	_name: 'container',
	options: {
		_content: undefined,
		_components: {}
	},
	_create: function() {
		this.options._content = this.element;
	},
	content: function() {
		return this.options._content;
	},
	add: function(element) {<commit_msg>Ajout de la methode $.webos.widget.is() qui permet de determiner si un element est un widget.<commit_after>/**
 * Widgets pour le webos.
* @author $imon <<EMAIL>>
* @version 1.0
* @since 1.0
*/

/*
* Objet servant a gerer les widgets sur le webos.
*/
$.webos = {};
/*
* Proprietes des widgets.
*/
$.webos.properties = {};
/*
* Liste des proprietes des widgets.
*/
$.webos.properties.list = {};
/**
* Recuperer les proprietes d'un widget.
* @param string widget Le nom du widget.
* @return object
*/
$.webos.properties.get = function(widget) {
	if (typeof $.webos.properties.list[widget] == 'undefined') {
		return {};
	}
	
	return $.webos.properties.list[widget];
};
/**
* Declarer un widget.
* @param string widget Le nom du widget.
* @param object|string arg1 Les proprietes du widget. Si est le nom d'un widget, le nouveau widget heritera de celui-ci.
* @param object arg2 Si arg1 est le nom d'un widget, arg2 sera les proprietes du widget.
*/
$.webos.widget = function(widget, arg1, arg2) {
	var properties;
	if (typeof arg2 != 'undefined') {
		properties = $.webos.extend($.webos.properties.get(arg1), arg2);
	} else {
		properties = arg1;
	}
	$.webos.properties.list[widget] = properties;
	
	$.widget('weboswidgets.'+widget, properties);
};
$.webos.widget.is = function(widget, name) {
	return $(widget).is(':weboswidgets-' + name);
};
var widgetProperties = {
	_name: 'widget',
	options: {
		id: 0,
		pid: null
	},
	_create: function() {
		this.options.id = $.webos.widgets.push(this.element) - 1;
		if (typeof Webos.Process.current() != 'undefined') {
			this.options.pid = Webos.Process.current().getPid();
		}
		this.element.addClass('webos-'+this._name);
		this.element.attr('id', 'webos-widget-'+this.options.id);
	},
	id: function() {
		return this.options.id;
	},
	pid: function() {
		return this.options.pid;
	},
	destroy: function() {
		this._destroy();
		delete $.webos.widgets[this.options.id];
		$.Widget.prototype.destroy.call(this);
	},
	_destroy: function() {},
	_setOption: function(key, value) {
		this.options[key] = value;
		this._update(key, value);
	},
	selector: function() {
		return '#'+this.element.attr('id');
	},
	_update: function() {}
};
$.webos.widget('widget', widgetProperties);
$.webos.widgets = [];
$.webos.getWidgets = function() {
	return $.webos.widgets;
};
$.webos.extend = function(parent, child) {
	child = $.extend(true, {}, parent, child);
	child._parent = function() {
		return parent;
	};
	var reportMethods = function(parentMethod, childMethod) {
		return function() {
			var args = new Array();
			for (var i = 0; i < arguments.length; i++) {
				args.push(arguments[i]);
			}
			parentMethod.apply(this, args);
			return childMethod.apply(this, args);
		};
	};
	for (var attr in child) {
		if (typeof child[attr] == 'function' && typeof parent[attr] == 'function') {
			child[attr] = reportMethods(parent[attr], child[attr]);
		}
		if (child[attr] instanceof Array && parent[attr] instanceof Array) {
			child[attr] = parent[attr].concat(child[attr]);
		}
	}
	return child;
};
/*
* TODO: Enlever les widgets crees par le processus.
*/
$.webos.stopProcess = function(proc) {
	var widgets = $.webos.getWidgets();
	for (var i = 0; i < widgets.length; i++) {
		//On enleve les widgets crees par le processus correspondant.
		// ...
		// Not yet implemented
	}
};

//Container
var containerProperties = $.webos.extend($.webos.properties.get('widget'), {
	_name: 'container',
	options: {
		_content: undefined,
		_components: {}
	},
	_create: function() {
		this.options._content = this.element;
	},
	content: function() {
		return this.options._content;
	},
	add: function(element) {
{'fraction_non_alphanumeric': 0.1770098730606488, 'fraction_numerical': 0.005077574047954866, 'mean_word_length': 3.8668496911461907, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1041403', 'n_tokens_mistral': 2573, 'n_tokens_neox': 2441, 'n_words': 602}