diff options
author | José Valim <jose.valim@gmail.com> | 2011-04-19 21:14:55 +0200 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2011-04-19 21:32:58 +0200 |
commit | 914218ef302542f3f58ef7f8f46c0ff0b540ac82 (patch) | |
tree | 59eaf97487fd4e05e3ec1c63d7bab1670c0e285d /actionpack/lib/action_view/helpers/sprockets_helper.rb | |
parent | c96bf840ad715cb203f29e1607929d59c3743d87 (diff) | |
download | rails-914218ef302542f3f58ef7f8f46c0ff0b540ac82.tar.gz rails-914218ef302542f3f58ef7f8f46c0ff0b540ac82.tar.bz2 rails-914218ef302542f3f58ef7f8f46c0ff0b540ac82.zip |
Let's use inheritance here, shall we?
Diffstat (limited to 'actionpack/lib/action_view/helpers/sprockets_helper.rb')
-rw-r--r-- | actionpack/lib/action_view/helpers/sprockets_helper.rb | 77 |
1 files changed, 23 insertions, 54 deletions
diff --git a/actionpack/lib/action_view/helpers/sprockets_helper.rb b/actionpack/lib/action_view/helpers/sprockets_helper.rb index bf47af6e10..e2e844c74d 100644 --- a/actionpack/lib/action_view/helpers/sprockets_helper.rb +++ b/actionpack/lib/action_view/helpers/sprockets_helper.rb @@ -1,10 +1,11 @@ require 'uri' +require 'action_view/helpers/asset_tag_helpers/asset_paths' module ActionView module Helpers module SprocketsHelper def asset_path(source, default_ext = nil) - compute_sprockets_path(source, 'assets', default_ext) + sprockets_asset_paths.compute_public_path(source, 'assets', default_ext, true) end def sprockets_javascript_include_tag(source, options = {}) @@ -27,74 +28,42 @@ module ActionView tag 'link', options end - private - def compute_sprockets_path(source, dir, default_ext = nil) - source = source.to_s - - unless source_is_a_url?(source) - add_asset_directory(source, dir) - add_default_extension(source, default_ext) - add_fingerprint(source, dir) - add_asset_host(source) - end - source - end - - def add_asset_directory(source, dir) - source.replace("/#{dir}/#{source}") if source[0] != ?/ - end - - def add_default_extension(source, default_ext) - source.replace("#{source}.#{default_ext}") if default_ext && File.extname(source).empty? - end - - def add_fingerprint(source, dir) - if source =~ /^\/#{dir}\/(.+)/ - source.replace(assets.path($1, performing_caching?, dir)) - end + def sprockets_asset_paths + @sprockets_asset_paths ||= begin + config = self.config if respond_to?(:config) + controller = self.controller if respond_to?(:controller) + SprocketsHelper::AssetPaths.new(config, controller) end + end - def add_asset_host(source) - # When included in Sprockets::Context, there's no controller - return unless respond_to?(:controller) - - host = compute_asset_host(source) - - if controller.respond_to?(:request) && host && URI.parse(host).host - source.replace("#{controller.request.protocol}#{host}#{source}") + class AssetPaths < ActionView::Helpers::AssetTagHelper::AssetPaths + def rewrite_asset_path(source, dir) + if source =~ /^\/#{dir}\/(.+)/ + assets.path($1, performing_caching?, dir) + else + source end end - - def source_is_a_url?(source) - URI.parse(source).host.present? - end - def compute_asset_host(source) - if host = config.asset_host - if host.is_a?(Proc) || host.respond_to?(:call) - case host.is_a?(Proc) ? host.arity : host.method(:call).arity - when 2 - request = controller.respond_to?(:request) && controller.request - host.call(source, request) - else - host.call(source) - end - else - (host =~ /%d/) ? host % (source.hash % 4) : host - end + def rewrite_extension(source, dir, ext) + if ext && File.extname(source).empty? + "#{source}.#{ext}" + else + source end end def assets Rails.application.assets end - + + # When included in Sprockets::Context, we need to ask the top-level config as the controller is not available def performing_caching? - # When included in Sprockets::Context, we need to ask the top-level config as the controller is not available - respond_to?(:config) ? config.perform_caching : Rails.application.config.action_controller.perform_caching + @config ? @config.perform_caching : Rails.application.config.action_controller.perform_caching end + end end end end |