middleman/middleman-core/lib/middleman-core/extensions/asset_host.rb
2014-03-03 22:32:12 -08:00

51 lines
1.3 KiB
Ruby

# Asset Host module
class Middleman::Extensions::AssetHost < ::Middleman::Extension
option :host, nil, 'The asset host to use, or false for no asset host, or a Proc to determine asset host'
def initialize(app, options_hash={}, &block)
super
# Backwards compatible API
app.config.define_setting :asset_host, nil, 'The asset host to use, or false for no asset host, or a Proc to determine asset host'
app.compass_config do |config|
if asset_host = extensions[:asset_host].host
if asset_host.is_a?(Proc)
config.asset_host(&asset_host)
else
config.asset_host do |asset|
asset_host
end
end
end
end if app.respond_to?(:compass_config)
end
def host
app.config[:asset_host] || options[:host]
end
helpers do
# Override default asset url helper to include asset hosts
#
# @param [String] path
# @param [String] prefix
# @return [String]
def asset_url(path, prefix='')
controller = extensions[:asset_host]
original_output = super
return original_output unless controller.host
asset_prefix = if controller.host.is_a?(Proc)
controller.host.call(original_output)
elsif controller.host.is_a?(String)
controller.host
end
File.join(asset_prefix, original_output)
end
end
end