class Middleman::ConfigExtension

Public Class Methods

new(app, config={}, &block) click to toggle source
Calls superclass method Middleman::Extension::new
# File lib/middleman-core/extension.rb, line 494
def initialize(app, config={}, &block)
  @descriptors = {}
  @ready = false

  self.class.exposed_to_config.each do |k, v|
    @descriptors[k] = []

    define_singleton_method(:"__original_#{v}", &method(v))
    define_singleton_method(v) do |*args, &b|
      proxy_method_call(k, v, args, &b)
    end
  end

  super
end

Public Instance Methods

after_configuration() click to toggle source
# File lib/middleman-core/extension.rb, line 510
def after_configuration
  context = self

  self.class.exposed_to_config.each do |k, v|
    ::Middleman::CoreExtensions::Collections::StepContext.add_to_context(k) do |*args, &b|
      r = context.method(:"__original_#{v}").call(*args, &b)
      descriptors << r if r.respond_to?(:execute_descriptor)
    end
  end
end
manipulate_resource_list(resources) click to toggle source
# File lib/middleman-core/extension.rb, line 532
def manipulate_resource_list(resources)
  @descriptors.values.flatten.reduce(resources) do |sum, c|
    c.execute_descriptor(app, sum)
  end
end
proxy_method_call(k, v, args, &b) click to toggle source
# File lib/middleman-core/extension.rb, line 539
def proxy_method_call(k, v, args, &b)
  if @ready
    ctx = ::Middleman::CoreExtensions::Collections::StepContext.current
    r = method(:"__original_#{v}").call(*args, &b)

    if r.respond_to?(:execute_descriptor)
      if ctx
        ctx.descriptors << r
      else
        @descriptors[k] << r
        @app.sitemap.rebuild_resource_list!(:"first_run_change_#{v}")
      end
    end
  else
    @descriptors[k] << method(:"__original_#{v}").call(*args, &b)
    @app.sitemap.rebuild_resource_list!(:"first_run_change_#{v}")
  end
end
ready() click to toggle source
# File lib/middleman-core/extension.rb, line 521
def ready
  @ready = true

  # @descriptors.each do |k, v|
  #   @descriptors[k] = []
  # end
end