OneCore-1.0

API / OnePlugin-1.0

'''OnePlugin-1.0''' provides a plugin framework built ontop of Ace3's Module system


OnePlugin:EnablePlugin(plugin)

Enables a plugin

Parameters

plugin


OnePlugin:GetPlugin(type, name, silent)

Returns an existing plugin

Parameters

type
a valid registered plugin type
name
the name of this plugin, must be unique.
silent
whether or not to error when called.


OnePlugin:IteratePluginTypes()

Provides an iterator for scanning the available plugin types

Return value

a iterator over the name, prototype of the available types.

Usage

-- Print a list of all registered plugin types.
for typeName, _ in MyAddon:IteratePluginTypes() do
    self:Print(typeName)
end


OnePlugin:IteratePluginsByType(type)

Allows for iteration over a given type of plugins.

Parameters

type

Return value

an iterator over name, plugin of the available plugins.

Usage

-- Print a list of all registered plugins of a given type.
for pluginName, _ in MyAddon:IteratePluginByType('plugin_type')
    self:Print(pluginName)
end


OnePlugin:NewPlugin(type, name, ...)

Creates a new plugin and returns a table to be populated with functionality.
Provides for automatic embedding of libraries if NewModule is available.

Parameters

type
a valid registered plugin type
name
the name of this plugin, must be unique.
...
optional list of libraries to embed. Has no affect if NewModule is not available.

Usage

local MyPlugin = MyAddon:NewPlugin('plugin_type', 'MyPlugin')


OnePlugin:NewPluginType(name)

Creates a new plugin type.

Parameters

name
Name of the plugin type

Return value

a fresh dictionary that can be used to build a prototype for the plugin type.

Usage

local SortingPlugins = MyAddon:NewPluginType('plugin_type')


OnePlugin:SetBasePluginPrototype(prototype)

Sets a table as being a base prototype for all of your plugins.

Parameters

prototype
A table to be used as the base prototype.

Usage

local PluginBase = {}
MyAddon:SetBasePluginPrototype(PluginBase)


You must login to post a comment. Don't have an account? Register to get one!