class Middleman::ExtensionManager

def activate(ext_name, options={}, &block)

Returns:
  • (void) -

Other tags:
    Yield: - Extension options that can be modified before the extension is initialized.

Parameters:
  • options (Hash) -- Options to pass to the extension
  • ext_name (Symbol) -- The name of thed extension to activate

Other tags:
    Example: Use a block to configure extension options -
    Example: Activate an extension, with options -
    Example: Activate an extension with no options -
def activate(ext_name, options={}, &block)
  begin
    extension = ::Middleman::Extensions.load(ext_name)
  rescue LoadError => e
    logger.debug "== Failed Activation `#{ext_name}` : #{e.message}"
    return
  end
  logger.debug "== Activating: #{ext_name}"
  if extension.supports_multiple_instances?
    @activated[ext_name] ||= {}
    key = "instance_#{@activated[ext_name].keys.length}"
    @activated[ext_name][key] = extension.new(@app, options, &block)
  elsif @activated.key?(ext_name)
    raise "#{ext_name} has already been activated and cannot be re-activated."
  else
    @activated[ext_name] = extension.new(@app, options, &block)
  end
end

def activate_all

def activate_all
  logger.debug 'Loaded extensions:'
  @instances = @activated.each_with_object([]) do |(ext_name, ext), sum|
    if ext.is_a?(Hash)
      ext.each do |instance_key, instance|
        logger.debug "== Extension: #{ext_name} #{instance_key}"
        sum << instance
      end
    else
      logger.debug "== Extension: #{ext_name}"
      sum << ext
    end
  end
  @instances.each do |ext|
    ::Middleman::Extension.activated_extension(ext)
  end
end

def add_exposed_to_context(context)

def add_exposed_to_context(context)
  @instances.each do |ext|
    ext.add_exposed_to_context(context)
  end
end

def auto_activate(key)

def auto_activate(key)
  ::Middleman::Extensions.auto_activate(key, @app)
end

def initialize(app)

def initialize(app)
  @app = app
  @activated = {}
  ::Middleman::Extensions.load_settings(@app)
  manager = self
  {
    before_sitemap: :before_sitemap,
    initialized: :before_configuration
  }.each do |key, value|
    cb = proc { manager.auto_activate(value) }
    @app.send(key, &cb)
  end
  @app.after_configuration_eval(&method(:activate_all))
end