module Middleman::Extensions

def load(name)

def load(name)
  name = name.to_sym
  return nil unless registered.has_key?(name)
  extension = registered[name]
  if extension.is_a?(Proc)
    extension = extension.call() || nil
    registered[name] = extension
  end
  extension
end

def register(name, namespace=nil, &block)

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

Parameters:
  • namespace (Module) -- The extension module
  • name (Symbol) -- The name of the extension
def register(name, namespace=nil, &block)
  # If we've already got a matching extension that passed the
  # version check, bail out.
  return if registered.has_key?(name.to_sym) &&
  !registered[name.to_sym].is_a?(String)
  registered[name.to_sym] = if block_given?
    block
  elsif namespace
    namespace
  end
end

def registered

def registered
  @_registered ||= {}
end