From 8001dab2580e4487cc5e2e24dff1be394e6bce77 Mon Sep 17 00:00:00 2001 From: Ben Hollis Date: Fri, 12 Apr 2013 21:54:28 -0700 Subject: [PATCH] Save information about extensions in a discoverable way. This allows us to display extension config information at /__middleman/config/, and also allows users to modify extension settings after they're activated in config.rb with a statement like "extensions[:asset_hash].options.exts += ['.js']". --- .../core_extensions/extensions.rb | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/middleman-core/lib/middleman-core/core_extensions/extensions.rb b/middleman-core/lib/middleman-core/core_extensions/extensions.rb index 44d4b7d1..7515a631 100644 --- a/middleman-core/lib/middleman-core/core_extensions/extensions.rb +++ b/middleman-core/lib/middleman-core/core_extensions/extensions.rb @@ -62,22 +62,12 @@ module Middleman send("#{env}_config", &block) end - # Alias `extensions` to access registered extensions - # - # @return [Array] - def extensions - @extensions ||= [] - end - # Register a new extension # # @param [Module] extension Extension modules to register # @param [Hash] options Per-extension options hash # @return [void] def register(extension, options={}, &block) - @extensions ||= [] - @extensions += [extension] - if extension.instance_of? Module extend extension if extension.respond_to?(:registered) @@ -87,6 +77,7 @@ module Middleman extension.registered(self, options, &block) end end + extension elsif extension.instance_of?(Class) && extension.ancestors.include?(::Middleman::Extension) extension.new(self, options, &block) end @@ -107,17 +98,24 @@ module Middleman ext_module = if ext.is_a?(Module) ext else - ::Middleman::Extensions.load(ext.to_sym) + ::Middleman::Extensions.load(ext) end if ext_module.nil? logger.error "== Unknown Extension: #{ext}" else logger.debug "== Activating: #{ext}" - self.class.register(ext_module, options, &block) + extensions[ext] = self.class.register(ext_module, options, &block) end end + # Access activated extensions + # + # @return [Hash] + def extensions + @extensions ||= {} + end + # Load features before starting server def initialize super @@ -149,7 +147,7 @@ module Middleman run_hook :after_configuration logger.debug "Loaded extensions:" - self.class.extensions.each do |ext| + self.extensions.each do |ext,_| logger.debug "== Extension: #{ext}" end end