Add callback so v4 extensions can see when other extensions are activated
This commit is contained in:
parent
f3e2e8fdf5
commit
265f90e240
6 changed files with 63 additions and 1 deletions
|
@ -142,6 +142,7 @@ module Middleman
|
|||
# Search the root of the project for required files
|
||||
$LOAD_PATH.unshift(root)
|
||||
|
||||
::Middleman::Extension.clear_after_extension_callbacks
|
||||
run_hook :initialized
|
||||
|
||||
if config[:autoload_sprockets]
|
||||
|
@ -178,7 +179,7 @@ module Middleman
|
|||
run_hook :after_configuration
|
||||
|
||||
logger.debug "Loaded extensions:"
|
||||
self.extensions.each do |ext,_|
|
||||
self.extensions.each do |ext, klass|
|
||||
if ext.is_a?(Hash)
|
||||
ext.each do |k,_|
|
||||
logger.debug "== Extension: #{k}"
|
||||
|
@ -186,6 +187,10 @@ module Middleman
|
|||
else
|
||||
logger.debug "== Extension: #{ext}"
|
||||
end
|
||||
|
||||
if klass.is_a?(::Middleman::Extension)
|
||||
::Middleman::Extension.activated_extension(klass)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
require "active_support/core_ext/class/attribute"
|
||||
require "active_support/core_ext/module/delegation"
|
||||
|
||||
module Middleman
|
||||
|
||||
|
@ -131,11 +132,31 @@ module Middleman
|
|||
def activate
|
||||
new(::Middleman::Application)
|
||||
end
|
||||
|
||||
def clear_after_extension_callbacks
|
||||
@_extension_activation_callbacks = {}
|
||||
end
|
||||
|
||||
def after_extension_activated(name, &block)
|
||||
@_extension_activation_callbacks ||= {}
|
||||
@_extension_activation_callbacks[name] ||= []
|
||||
@_extension_activation_callbacks[name] << block if block_given?
|
||||
end
|
||||
|
||||
def activated_extension(instance)
|
||||
name = instance.class.extension_name
|
||||
return unless @_extension_activation_callbacks && @_extension_activation_callbacks[name]
|
||||
@_extension_activation_callbacks[name].each do |block|
|
||||
block.arity == 1 ? block.call(instance) : block.call()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
attr_accessor :options
|
||||
attr_reader :app
|
||||
|
||||
delegate :after_extension_activated, :to => :"::Middleman::Extension"
|
||||
|
||||
def initialize(klass, options_hash={}, &block)
|
||||
@_helpers = []
|
||||
@klass = klass
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue