module Middleman::CoreExtensions::Assets::ClassMethods

def asset_handler_get_url(path, prefix="", request=nil)

def asset_handler_get_url(path, prefix="", request=nil)
  @asset_handler_map   ||= []
  @asset_handler_stack ||= []
  
  @asset_handler_stack.last.call(path, prefix, request)
end

def before_asset_handler(position, *args)

def before_asset_handler(position, *args)
  @asset_handler_map   ||= []
  @asset_handler_stack ||= []
  
  current_index = @asset_handler_map.index(position)
  return nil unless current_index
  previous = current_index - 1
  if (previous >= 0) && (previous < @asset_handler_map.length)
    @asset_handler_stack[previous].call(*args)
  else
    nil
  end
end

def register_asset_handler(handler_name, &block)

def register_asset_handler(handler_name, &block)
  @asset_handler_map   ||= []
  @asset_handler_stack ||= []
  
  if block_given?
    @asset_handler_stack << block
    @asset_handler_map   << handler_name
  end
end