class Middleman::Extension
Attributes
app[R]
options[RW]
Public Class Methods
activate()
click to toggle source
# File lib/middleman-core/extension.rb, line 44 def activate new(::Middleman::Application) end
activated_extension(instance)
click to toggle source
# File lib/middleman-core/extension.rb, line 58 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
after_extension_activated(name, &block)
click to toggle source
# File lib/middleman-core/extension.rb, line 52 def after_extension_activated(name, &block) @_extension_activation_callbacks ||= {} @_extension_activation_callbacks[name] ||= [] @_extension_activation_callbacks[name] << block if block_given? end
clear_after_extension_callbacks()
click to toggle source
# File lib/middleman-core/extension.rb, line 48 def clear_after_extension_callbacks @_extension_activation_callbacks = {} end
config()
click to toggle source
# File lib/middleman-core/extension.rb, line 12 def config @_config ||= ::Middleman::Configuration::ConfigurationManager.new end
extension_name()
click to toggle source
# File lib/middleman-core/extension.rb, line 36 def extension_name ext_name || name.underscore.split('/').last.to_sym end
helpers(*m, &block)
click to toggle source
Add helpers to the global Middleman
application. This accepts either a list of modules to add on behalf of this extension, or a block whose contents will all be used as helpers in a new module.
# File lib/middleman-core/extension.rb, line 24 def helpers(*m, &block) self.defined_helpers ||= [] if block_given? mod = Module.new mod.module_eval(&block) m = [mod] end self.defined_helpers += m end
new(klass, options_hash={}, &block)
click to toggle source
# File lib/middleman-core/extension.rb, line 72 def initialize(klass, options_hash={}, &block) @_helpers = [] @klass = klass setup_options(options_hash, &block) setup_app_reference_when_available # Bind app hooks to local methods bind_before_configuration bind_after_configuration bind_before_build bind_after_build end
option(key, default=nil, description=nil)
click to toggle source
# File lib/middleman-core/extension.rb, line 16 def option(key, default=nil, description=nil) config.define_setting(key, default, description) end
register(n=extension_name)
click to toggle source
# File lib/middleman-core/extension.rb, line 40 def register(n=extension_name) ::Middleman::Extensions.register(n, self) end
Public Instance Methods
app=(app)
click to toggle source
# File lib/middleman-core/extension.rb, line 86 def app=(app) @app = app (self.class.defined_helpers || []).each do |m| app.class.send(:include, m) end end
Protected Instance Methods
bind_after_build()
click to toggle source
# File lib/middleman-core/extension.rb, line 153 def bind_after_build ext = self return unless ext.respond_to?(:after_build) @klass.after_build do |builder| if ext.method(:after_build).arity == 1 ext.after_build(builder) else ext.after_build end end end
bind_after_configuration()
click to toggle source
# File lib/middleman-core/extension.rb, line 128 def bind_after_configuration ext = self @klass.after_configuration do ext.after_configuration if ext.respond_to?(:after_configuration) # rubocop:disable IfUnlessModifier if ext.respond_to?(:manipulate_resource_list) ext.app.sitemap.register_resource_list_manipulator(ext.class.extension_name, ext) end end end
bind_before_build()
click to toggle source
# File lib/middleman-core/extension.rb, line 140 def bind_before_build ext = self return unless ext.respond_to?(:before_build) @klass.before_build do |builder| if ext.method(:before_build).arity == 1 ext.before_build(builder) else ext.before_build end end end
bind_before_configuration()
click to toggle source
# File lib/middleman-core/extension.rb, line 119 def bind_before_configuration ext = self return unless ext.respond_to?(:before_configuration) @klass.before_configuration do ext.before_configuration end end
setup_app_reference_when_available()
click to toggle source
# File lib/middleman-core/extension.rb, line 107 def setup_app_reference_when_available ext = self @klass.initialized do ext.app = self end @klass.instance_available do ext.app ||= self end end
setup_options(options_hash) { |options| ... }
click to toggle source
# File lib/middleman-core/extension.rb, line 96 def setup_options(options_hash) @options = self.class.config.dup @options.finalize! options_hash.each do |k, v| @options[k] = v end yield @options if block_given? end