class Middleman::Extension

def config

def config
  @_config ||= ::Middleman::Configuration::ConfigurationManager.new
end

def extension_name

def extension_name
  self.ext_name || self.name.underscore.split("/").last.to_sym
end

def helpers(&block)

def helpers(&block)
  self.defined_helpers ||= []
  m = Module.new
  m.module_eval(&block)
  self.defined_helpers << m
end

def initialize(klass, options_hash={})

def initialize(klass, options_hash={})
  @_helpers = []
  @options = self.class.config.dup
  @options.finalize!
  options_hash.each do |k, v|
    @options[k] = v
  end
  yield @options if block_given?
  ext = self
  klass.initialized do
    ext.app = self
    
    (ext.class.defined_helpers || []).each do |m|
      ext.app.class.send(:include, m)
    end
  end
  klass.after_configuration do
    if ext.respond_to?(:after_configuration)
      ext.after_configuration
    end
    if ext.respond_to?(:manipulate_resource_list)
      ext.app.sitemap.register_resource_list_manipulator(ext.class.extension_name, ext)
    end
  end
end

def option(key, default=nil, description=nil)

def option(key, default=nil, description=nil)
  config.define_setting(key, default, description)
end

def register(n=self.extension_name)

def register(n=self.extension_name)
  ::Middleman::Extensions.register(n, self)
end