middleman/middleman-core/lib/middleman-core/extensions/relative_assets.rb

32 lines
951 B
Ruby
Raw Normal View History

2013-04-20 23:33:18 +02:00
# Relative Assets extension
class Middleman::Extensions::RelativeAssets < ::Middleman::Extension
def initialize(app, options_hash={}, &block)
super
2013-04-20 23:33:18 +02:00
# After compass is setup, make it use the registered cache buster
app.compass_config do |config|
config.relative_assets = true
end if app.respond_to?(:compass_config)
2013-04-20 23:33:18 +02:00
end
2013-04-20 23:33:18 +02:00
helpers do
# asset_url override for relative assets
# @param [String] path
# @param [String] prefix
# @param [Hash] options Data to pass through.
2013-04-20 23:33:18 +02:00
# @return [String]
def asset_url(path, prefix='', options={})
path = super
2013-04-20 23:33:18 +02:00
requested_resource = options[:current_resource] || current_resource
if path.include?('//') || path.start_with?('data:') || !requested_resource
2013-04-20 23:33:18 +02:00
path
else
current_dir = Pathname('/' + requested_resource.destination_path)
2013-04-20 23:33:18 +02:00
Pathname(path).relative_path_from(current_dir.dirname).to_s
end
end
end
end