class Photish::Plugin::Repository

Public Instance Methods

all_plugins() click to toggle source
# File lib/photish/plugin/repository.rb, line 20
def all_plugins
  @all_plugins ||= constants + sub_constants
end
plugins_for(type) click to toggle source
# File lib/photish/plugin/repository.rb, line 16
def plugins_for(type)
  all_plugins.reject { |m| !m.is_for?(type) }
end
reload(config) click to toggle source
# File lib/photish/plugin/repository.rb, line 7
def reload(config)
  log.debug "Loading plugins..."

  load_each_plugin_file(config.site_dir)
  require_each_explicit_plugin(config.plugins)
  clear_plugin_cache
  load_each_plugin_constant
end

Private Instance Methods

clear_plugin_cache() click to toggle source
# File lib/photish/plugin/repository.rb, line 39
def clear_plugin_cache
  @all_plugins = nil
end
constantize(symbol) click to toggle source
# File lib/photish/plugin/repository.rb, line 69
def constantize(symbol)
  Kernel.const_get("Photish::Plugin::#{symbol}")
end
constants() click to toggle source
# File lib/photish/plugin/repository.rb, line 49
def constants
  Photish::Plugin.constants.map    { |m| constantize(m) }
                           .reject { |m| ignored_modules.include?(m) }
                           .select { |m| m.respond_to?(:is_for?) }
end
ignored_modules() click to toggle source
# File lib/photish/plugin/repository.rb, line 63
def ignored_modules
  [Photish::Plugin::Repository,
   Photish::Plugin::Pluginable,
   Photish::Plugin::Type]
end
load_each_plugin_constant() click to toggle source
# File lib/photish/plugin/repository.rb, line 33
def load_each_plugin_constant
  all_plugins.each do |plugin|
    log.debug "Found plugin #{plugin}"
  end
end
load_each_plugin_file(site_dir) click to toggle source
# File lib/photish/plugin/repository.rb, line 43
def load_each_plugin_file(site_dir)
  Dir[File.join(site_dir, '_plugins', '*.rb')].each do |file|
    load file
  end
end
require_each_explicit_plugin(plugins) click to toggle source
# File lib/photish/plugin/repository.rb, line 26
def require_each_explicit_plugin(plugins)
  plugins.each do |plugin|
    log.debug "Requiring config explicit plugin, #{plugin}"
    require plugin
  end
end
sub_constants() click to toggle source
# File lib/photish/plugin/repository.rb, line 55
def sub_constants
  Photish::Plugin.constants.map    { |c| constantize(c) }
                           .reject { |m| ignored_modules.include?(m) }
                           .map    { |c| c.constants.map { |d| constantize("#{c.name}::#{d}") } }
                           .flatten
                           .select { |m| m.respond_to?(:is_for?) }
end