lib/middleman/features.rb



module Middleman::Features
  autoload :RelativeAssets,      "middleman/features/relative_assets"
  autoload :AssetHost,           "middleman/features/asset_host"
  autoload :CacheBuster,         "middleman/features/cache_buster"
  autoload :DefaultHelpers,      "middleman/features/default_helpers"
  autoload :AutomaticImageSizes, "middleman/features/automatic_image_sizes"
  autoload :UglyHaml,            "middleman/features/ugly_haml"
  autoload :MinifyCss,           "middleman/features/minify_css"
  autoload :MinifyJavascript,    "middleman/features/minify_javascript"
  autoload :Slickmap,            "middleman/features/slickmap"
  autoload :SmushPngs,           "middleman/features/smush_pngs"
  autoload :CodeRay,             "middleman/features/code_ray"
  autoload :Lorem,               "middleman/features/lorem"
  # autoload :LiveReload,          "middleman/features/live_reload"
  
  class << self
    def registered(app)
      app.extend ClassMethods
    end
    alias :included :registered
  end
  
  module ClassMethods
    def activate(feature_name)
      mod_name = feature_name.to_s.camelize
      if Middleman::Features.const_defined?(mod_name)
        register Middleman::Features.const_get(mod_name)
      end
    end
    
    def enable(feature_name)
      $stderr.puts "Warning: Feature activation has been renamed from enable to activate"
      activate(feature_name)
      super(feature_name)
    end
  end
end