module Middleman::Extensions

def auto_activate(group, app)

Parameters:
  • app (Middleman::Application) -- An instance of the app.
  • group (Symbol) -- The name of the auto_activation group.

Other tags:
    Api: - private
def auto_activate(group, app)
  @auto_activate[group].each do |descriptor|
    next unless descriptor[:modes] == :all || descriptor[:modes].include?(app.config[:mode])
    app.extensions.activate descriptor[:name]
  end
end

def auto_activated

Returns:
  • (Array) - A list of extension names which are automatically activated.

Other tags:
    Api: - private
def auto_activated
  @auto_activate.values.map(&:to_a).flatten.map(&:name)
end

def load(name)

Returns:
  • (Class) - A {Middleman::Extension} class implementing the extension

Parameters:
  • name (Symbol) -- The name of the extension

Other tags:
    Api: - private
def load(name)
  raise 'Extension name must be a symbol' unless name.is_a?(Symbol)
  unless registered.key?(name)
    raise "Unknown Extension: #{name}. Check the name and make sure you have referenced the extension's gem in your Gemfile."
  end
  extension_class = registered[name]
  if extension_class.is_a?(Proc)
    extension_class = extension_class.call
    registered[name] = extension_class
  end
  unless extension_class.ancestors.include?(::Middleman::Extension)
    raise "Tried to activate old-style extension: #{name}. They are no longer supported."
  end
  # Set the extension's name to whatever it was registered as.
  extension_class.ext_name = name
  extension_class
end

def load_settings(app)

def load_settings(app)
  registered.each do |name, _|
    begin
      ext = load(name)
      unless ext.global_config.all_settings.empty?
        app.config.load_settings(ext.global_config.all_settings)
      end
    rescue LoadError
    end
  end
end

def register(name, extension_class=nil, options={}, &block)

Returns:
  • (void) -

Other tags:
    Yield: - Instead of passing a module in namespace, you can provide

Options Hash: (**options)
  • :auto_activate (Boolean) -- If this is set to a lifecycle event (:before_configuration or :before_sitemap), this extension will be automatically activated at that point.

Parameters:
  • extension_class (Class) -- The extension class (Must inherit from {Middleman::Extension})
  • name (Symbol) -- The name of the extension
def register(name, extension_class=nil, options={}, &block)
  raise 'Extension name must be a symbol' unless name.is_a?(Symbol)
  # If we've already got an extension registered under this name, bail out
  # raise "There is a already an extension registered with the name '#{name}'" if registered.key?(name)
  # If the extension is defined with a block, grab options out of the "extension_class" parameter.
  if extension_class && block_given? && options.empty? && extension_class.is_a?(Hash)
    options = extension_class
    extension_class = nil
  end
  registered[name] = if block_given?
    block
  elsif extension_class && extension_class.ancestors.include?(::Middleman::Extension)
    extension_class
  else
    raise 'You must provide a Middleman::Extension or a block that returns a Middleman::Extension'
  end
  return unless options[:auto_activate]
  descriptor = AutoActivation.new(name, options[:modes] || :all)
  @auto_activate[options[:auto_activate]] << descriptor
end