Skip to content

Commit

Permalink
Allow registering javascript/stylesheet_expansions to existing symbols
Browse files Browse the repository at this point in the history
  • Loading branch information
Sven Fuchs committed Nov 21, 2010
1 parent 54828a1 commit b712476
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 7 deletions.
12 changes: 9 additions & 3 deletions actionpack/lib/action_view/helpers/asset_tag_helper.rb
Expand Up @@ -375,7 +375,10 @@ def javascript_include_tag(*sources)
# <script type="text/javascript" src="/javascripts/body.js"></script>
# <script type="text/javascript" src="/javascripts/tail.js"></script>
def self.register_javascript_expansion(expansions)
@@javascript_expansions.merge!(expansions)
expansions.each do |key, values|
@@javascript_expansions[key] ||= []
@@javascript_expansions[key] += Array(values)
end
end

# Register one or more stylesheet files to be included when <tt>symbol</tt>
Expand All @@ -390,7 +393,10 @@ def self.register_javascript_expansion(expansions)
# <link href="/stylesheets/body.css" media="screen" rel="stylesheet" type="text/css" />
# <link href="/stylesheets/tail.css" media="screen" rel="stylesheet" type="text/css" />
def self.register_stylesheet_expansion(expansions)
@@stylesheet_expansions.merge!(expansions)
expansions.each do |key, values|
@@stylesheet_expansions[key] ||= []
@@stylesheet_expansions[key] += Array(values)
end
end

def self.reset_javascript_include_default
Expand Down Expand Up @@ -860,7 +866,7 @@ def expand_stylesheet_sources(sources, recursive)
def determine_source(source, collection)
case source
when Symbol
collection[source] || raise(ArgumentError, "No expansion found for #{source.inspect}")
collection[source].present? ? collection[source] : raise(ArgumentError, "No expansion found for #{source.inspect}")
else
source
end
Expand Down
28 changes: 24 additions & 4 deletions actionpack/test/template/asset_tag_helper_test.rb
Expand Up @@ -47,13 +47,19 @@ def host_with_port() 'localhost' end
ActionView::Helpers::AssetTagHelper::register_javascript_expansion :defaults => ['prototype', 'effects', 'dragdrop', 'controls', 'rails']
end

def url_for(*args)
"http://www.example.com"
end

def teardown
super
config.perform_caching = false
ENV.delete('RAILS_ASSET_ID')

ActionView::Helpers::AssetTagHelper.module_eval do
javascript_expansions.clear
stylesheet_expansions.clear
end
end

def url_for(*args)
"http://www.example.com"
end

AutoDiscoveryToTag = {
Expand Down Expand Up @@ -268,6 +274,13 @@ def test_custom_javascript_expansions_and_defaults_puts_application_js_at_the_en
assert_dom_equal %(<script src="/javascripts/controls.js" type="text/javascript"></script>\n<script src="/javascripts/prototype.js" type="text/javascript"></script>\n<script src="/javascripts/effects.js" type="text/javascript"></script>\n<script src="/javascripts/dragdrop.js" type="text/javascript"></script>\n<script src="/javascripts/controls.js" type="text/javascript"></script>\n<script src="/javascripts/rails.js" type="text/javascript"></script>\n<script src="/javascripts/bank.js" type="text/javascript"></script>\n<script src="/javascripts/robber.js" type="text/javascript"></script>\n<script src="/javascripts/effects.js" type="text/javascript"></script>\n<script src="/javascripts/application.js" type="text/javascript"></script>), javascript_include_tag('controls',:defaults, :robbery, 'effects')
end

def test_registering_javascript_expansions_merges_with_existing_expansions
ENV["RAILS_ASSET_ID"] = ""
ActionView::Helpers::AssetTagHelper::register_javascript_expansion :can_merge => ['bank']
ActionView::Helpers::AssetTagHelper::register_javascript_expansion :can_merge => ['robber']
assert_dom_equal %(<script src="/javascripts/bank.js" type="text/javascript"></script>\n<script src="/javascripts/robber.js" type="text/javascript"></script>), javascript_include_tag(:can_merge)
end

def test_custom_javascript_expansions_with_undefined_symbol
ActionView::Helpers::AssetTagHelper::register_javascript_expansion :monkey => nil
assert_raise(ArgumentError) { javascript_include_tag('first', :monkey, 'last') }
Expand Down Expand Up @@ -334,6 +347,13 @@ def test_custom_stylesheet_expansions_with_undefined_symbol
assert_raise(ArgumentError) { stylesheet_link_tag('first', :monkey, 'last') }
end

def test_registering_stylesheet_expansions_merges_with_existing_expansions
ENV["RAILS_ASSET_ID"] = ""
ActionView::Helpers::AssetTagHelper::register_stylesheet_expansion :can_merge => ['bank']
ActionView::Helpers::AssetTagHelper::register_stylesheet_expansion :can_merge => ['robber']
assert_dom_equal %(<link href="/stylesheets/bank.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/robber.css" media="screen" rel="stylesheet" type="text/css" />), stylesheet_link_tag(:can_merge)
end

def test_image_path
ImagePathToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) }
end
Expand Down

0 comments on commit b712476

Please sign in to comment.