diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2012-08-30 05:28:31 -0700 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2012-08-30 05:28:31 -0700 |
commit | a317e7897f38c02e84d0827cd60e10a8f59a1a95 (patch) | |
tree | 2a2898f29b46a6e65d784522d2c293e81a85f477 /actionpack | |
parent | a0c5cc6a6df3843a73df3969226cce09620a1614 (diff) | |
parent | e7c23a4a7a0a576231b9d77f4ec47f7f10eb7d42 (diff) | |
download | rails-a317e7897f38c02e84d0827cd60e10a8f59a1a95.tar.gz rails-a317e7897f38c02e84d0827cd60e10a8f59a1a95.tar.bz2 rails-a317e7897f38c02e84d0827cd60e10a8f59a1a95.zip |
Merge pull request #7483 from christos/improve_template_digestor
Better ActionView::Digestor nested template inference
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/lib/action_view/digestor.rb | 8 | ||||
-rw-r--r-- | actionpack/test/fixtures/digestor/messages/_form.html.erb | 0 | ||||
-rw-r--r-- | actionpack/test/fixtures/digestor/messages/edit.html.erb | 5 | ||||
-rw-r--r-- | actionpack/test/template/digestor_test.rb | 29 |
4 files changed, 38 insertions, 4 deletions
diff --git a/actionpack/lib/action_view/digestor.rb b/actionpack/lib/action_view/digestor.rb index cfa864cdd4..899100d06c 100644 --- a/actionpack/lib/action_view/digestor.rb +++ b/actionpack/lib/action_view/digestor.rb @@ -15,10 +15,10 @@ module ActionView # render(topics) => render("topics/topic") # render(message.topics) => render("topics/topic") RENDER_DEPENDENCY = / - render\s? # render, followed by an optional space - \(? # start a optional parenthesis for the render call - (partial:)?\s? # naming the partial, used with collection -- 1st capture - ([@a-z"'][@a-z_\/\."']+) # the template name itself -- 2nd capture + render\s* # render, followed by optional whitespace + \(? # start an optional parenthesis for the render call + (partial:|:partial\s+=>)?\s* # naming the partial, used with collection -- 1st capture + ([@a-z"'][@a-z_\/\."']+) # the template name itself -- 2nd capture /x cattr_accessor(:cache) { Hash.new } diff --git a/actionpack/test/fixtures/digestor/messages/_form.html.erb b/actionpack/test/fixtures/digestor/messages/_form.html.erb new file mode 100644 index 0000000000..e69de29bb2 --- /dev/null +++ b/actionpack/test/fixtures/digestor/messages/_form.html.erb diff --git a/actionpack/test/fixtures/digestor/messages/edit.html.erb b/actionpack/test/fixtures/digestor/messages/edit.html.erb new file mode 100644 index 0000000000..a9e0a88e32 --- /dev/null +++ b/actionpack/test/fixtures/digestor/messages/edit.html.erb @@ -0,0 +1,5 @@ +<%= render "header" %> +<%= render partial: "form" %> +<%= render @message %> +<%= render ( @message.events ) %> +<%= render :partial => "comments/comment", :collection => @message.comments %> diff --git a/actionpack/test/template/digestor_test.rb b/actionpack/test/template/digestor_test.rb index 067ab500f5..a53e335bb3 100644 --- a/actionpack/test/template/digestor_test.rb +++ b/actionpack/test/template/digestor_test.rb @@ -92,6 +92,35 @@ class TemplateDigestorTest < ActionView::TestCase end end + def test_extra_whitespace_in_render_partial + assert_digest_difference("messages/edit") do + change_template("messages/_form") + end + end + + def test_extra_whitespace_in_render_named_partial + assert_digest_difference("messages/edit") do + change_template("messages/_header") + end + end + + def test_extra_whitespace_in_render_record + assert_digest_difference("messages/edit") do + change_template("messages/_message") + end + end + + def test_extra_whitespace_in_render_with_parenthesis + assert_digest_difference("messages/edit") do + change_template("events/_event") + end + end + + def test_old_style_hash_in_render_invocation + assert_digest_difference("messages/edit") do + change_template("comments/_comment") + end + end private def assert_logged(message) |