To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.
root / .svn / pristine / 5f / 5f8859116475dd06123c2a90756b26148236e7e2.svn-base @ 1297:0a574315af3e
History | View | Annotate | Download (1.14 KB)
| 1 |
# The PluginList class is an array, enhanced to allow access to loaded plugins |
|---|---|
| 2 |
# by name, and iteration over loaded plugins in order of priority. This array is used |
| 3 |
# by Engines::RailsExtensions::RailsInitializer to create the Engines.plugins array. |
| 4 |
# |
| 5 |
# Each loaded plugin has a corresponding Plugin instance within this array, and |
| 6 |
# the order the plugins were loaded is reflected in the entries in this array. |
| 7 |
# |
| 8 |
# For more information, see the Rails module. |
| 9 |
module Engines |
| 10 |
class Plugin |
| 11 |
class List < Array |
| 12 |
# Finds plugins with the set with the given name (accepts Strings or Symbols), or |
| 13 |
# index. So, Engines.plugins[0] returns the first-loaded Plugin, and Engines.plugins[:engines] |
| 14 |
# returns the Plugin instance for the engines plugin itself. |
| 15 |
def [](name_or_index) |
| 16 |
if name_or_index.is_a?(Fixnum) |
| 17 |
super |
| 18 |
else |
| 19 |
self.find { |plugin| plugin.name.to_s == name_or_index.to_s }
|
| 20 |
end |
| 21 |
end |
| 22 |
|
| 23 |
# Go through each plugin, highest priority first (last loaded first). Effectively, |
| 24 |
# this is like <tt>Engines.plugins.reverse</tt> |
| 25 |
def by_precedence |
| 26 |
reverse |
| 27 |
end |
| 28 |
end |
| 29 |
end |
| 30 |
end |