thirdparty/jsdoctoolkit/app/lib/JSDOC/PluginManager.js
author Daniel Hans <Daniel.M.Hans@gmail.com>
Tue, 03 Nov 2009 00:50:23 +0100
changeset 3075 1e78db95e38a
parent 3041 c8f47f0b6697
permissions -rw-r--r--
getListContentForData function added to lists helper. It allows to manually set a list of entities which is to be displayed on the view. Previously, the only function was getListContent, but it retrived data on its own by a single query. The new function can be useful whenever it is impossible or very awkward to obtain entities in such a way (for example more sophisticated SQL statements). Additionally, the getListContent function is reconstructed so that it collects the data first and then calls getListContentForData.

/**
	@namespace Holds functionality related to running plugins.
*/
JSDOC.PluginManager = {
}

/**
	@param name A unique name that identifies that plugin.
	@param handlers A collection of named functions. The names correspond to hooks in the core code.
*/
JSDOC.PluginManager.registerPlugin = function(/**String*/name, /**Object*/handlers) {
	if (!defined(JSDOC.PluginManager.plugins))
		/** The collection of all plugins. Requires a unique name for each.
		*/
		JSDOC.PluginManager.plugins = {};
	
	
	JSDOC.PluginManager.plugins[name] = handlers;
}

/**
	@param hook The name of the hook that is being caught.
	@param target Any object. This will be passed as the only argument to the handler whose
	name matches the hook name. Handlers cannot return a value, so must modify the target
	object to have an effect.
*/
JSDOC.PluginManager.run = function(/**String*/hook, /**Mixed*/target) {
	for (var name in JSDOC.PluginManager.plugins) {
		if (defined(JSDOC.PluginManager.plugins[name][hook])) {
			JSDOC.PluginManager.plugins[name][hook](target);
		}
	}
}