module Middleman::Base::ClassMethods

def before_processing(name=:unnamed, idx=-1, &block)

def before_processing(name=:unnamed, idx=-1, &block)
  @before_processes ||= []
  @before_processes.insert(idx, [name, block])
end

def build?; environment == :build; end

Convenience method to check if we're in build mode
def build?; environment == :build; end

def execute_before_processing!(inst, resolved_template)

def execute_before_processing!(inst, resolved_template)
  @before_processes ||= []
  
  @before_processes.all? do |name, block|
    inst.instance_exec(resolved_template, &block)
  end
end

def set(option, value = (not_set = true), ignore_setter = false, &block)

Specifically for the asset_host feature
Override Sinatra's set to accept a block
def set(option, value = (not_set = true), ignore_setter = false, &block)
  if block_given?
    value = Proc.new { block }
  end

  super(option, value, ignore_setter, &nil)
end