module Middleman::CoreExtensions::Features::ClassMethods

def activate(feature)

activate MyFeatureModule

Alternatively, you can pass in a Middleman feature module directly.

activate :lorem

feature module and includes it.
It takes a underscore-separated symbol, finds the appropriate
This method is available in the project's `config.rb`.
def activate(feature)
  if feature.is_a? Symbol
    feature = feature.to_s 
  end
  if feature.is_a? String
    feature = feature.camelize
    feature = Middleman::Features.const_get(feature)
  end
  
  $stderr.puts "== Activating:  #{feature}" if logging?
  register feature
end

def after_configuration(&block)

Add a block/proc to be run after features have been setup
def after_configuration(&block)
  @run_after_features ||= []
  @run_after_features << block
end

def new

Load features before starting server
def new
  # Check for and evaluate local configuration
  local_config = File.join(self.root, "config.rb")
  if File.exists? local_config
    $stderr.puts "== Reading:  Local config" if logging?
    class_eval File.read(local_config)
    set :app_file, File.expand_path(local_config)
  end
  
  # Add in defaults
  default_features.each do |ext|
    activate ext
  end
  
  run_after_features.each { |block| class_eval(&block) }
  
  if logging?
    extensions.each do |ext|
      $stderr.puts "== Extension: #{ext}"
    end
  end
  
  super
end

def run_after_features

def run_after_features
  @run_after_features || []
end