diff options
author | Sergey Nartimov <just.lest@gmail.com> | 2012-01-26 01:13:00 +0300 |
---|---|---|
committer | Sergey Nartimov <just.lest@gmail.com> | 2012-01-26 01:13:20 +0300 |
commit | 858f4646fe72e151e1af0d217a43e299cee3fc6d (patch) | |
tree | b8a24412002f8a1e02b9da1a5abe7b1beb7099bc | |
parent | fc5478799be56aa23cdbe787ccdedeac0da146b0 (diff) | |
download | rails-858f4646fe72e151e1af0d217a43e299cee3fc6d.tar.gz rails-858f4646fe72e151e1af0d217a43e299cee3fc6d.tar.bz2 rails-858f4646fe72e151e1af0d217a43e299cee3fc6d.zip |
reuse common video/audio tags code and do not modify options
-rw-r--r-- | actionpack/lib/action_view/helpers/asset_tag_helper.rb | 46 | ||||
-rw-r--r-- | actionpack/test/template/asset_tag_helper_test.rb | 8 |
2 files changed, 29 insertions, 25 deletions
diff --git a/actionpack/lib/action_view/helpers/asset_tag_helper.rb b/actionpack/lib/action_view/helpers/asset_tag_helper.rb index 93092ceeb4..280e51549e 100644 --- a/actionpack/lib/action_view/helpers/asset_tag_helper.rb +++ b/actionpack/lib/action_view/helpers/asset_tag_helper.rb @@ -416,22 +416,12 @@ module ActionView # video_tag(["trailer.ogg", "trailer.flv"] :size => "160x120") # => # <video height="120" width="160"><source src="/videos/trailer.ogg" /><source src="/videos/trailer.flv" /></video> def video_tag(*sources) - options = sources.extract_options!.symbolize_keys! - sources.flatten! + multiple_sources_tag('video', sources) do |options| + options[:poster] = path_to_image(options[:poster]) if options[:poster] - options[:poster] = path_to_image(options[:poster]) if options[:poster] - - if size = options.delete(:size) - options[:width], options[:height] = size.split("x") if size =~ %r{^\d+x\d+$} - end - - if sources.size > 1 - content_tag("video", options) do - safe_join sources.map { |source| tag("source", :src => path_to_video(source)) } + if size = options.delete(:size) + options[:width], options[:height] = size.split("x") if size =~ %r{^\d+x\d+$} end - else - options[:src] = path_to_video(sources.first) - tag("video", options) end end @@ -449,17 +439,7 @@ module ActionView # audio_tag("sound.wav", "sound.mid") # => # <audio><source src="/audios/sound.wav" /><source src="/audios/sound.mid" /></audio> def audio_tag(*sources) - options = sources.extract_options!.symbolize_keys! - sources.flatten! - - if sources.size > 1 - content_tag("audio", options) do - safe_join sources.collect { |source| tag("source", :src => path_to_audio(source)) } - end - else - options[:src] = path_to_audio(sources.first) - tag("audio", options) - end + multiple_sources_tag('audio', sources) end private @@ -467,6 +447,22 @@ module ActionView def asset_paths @asset_paths ||= AssetTagHelper::AssetPaths.new(config, controller) end + + def multiple_sources_tag(type, sources) + options = sources.extract_options!.dup.symbolize_keys! + sources.flatten! + + yield options if block_given? + + if sources.size > 1 + content_tag(type, options) do + safe_join sources.map { |source| tag("source", :src => send("path_to_#{type}", source)) } + end + else + options[:src] = send("path_to_#{type}", sources.first) + tag(type, options) + end + end end end end diff --git a/actionpack/test/template/asset_tag_helper_test.rb b/actionpack/test/template/asset_tag_helper_test.rb index 92e053134f..3422a5efbd 100644 --- a/actionpack/test/template/asset_tag_helper_test.rb +++ b/actionpack/test/template/asset_tag_helper_test.rb @@ -494,6 +494,14 @@ class AssetTagHelperTest < ActionView::TestCase AudioLinkToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) } end + def test_video_audio_tag_does_not_modify_options + options = {:autoplay => true} + video_tag('video', options) + assert_equal({:autoplay => true}, options) + audio_tag('audio', options) + assert_equal({:autoplay => true}, options) + end + def test_timebased_asset_id expected_time = File.mtime(File.expand_path(File.dirname(__FILE__) + "/../fixtures/public/images/rails.png")).to_i.to_s assert_equal %(<img alt="Rails" src="/images/rails.png?#{expected_time}" />), image_tag("rails.png") |