提交 345ac293 编写于 作者: J José Valim

Merge pull request #4679 from lest/patch-1

AssetTagHelper improvements
......@@ -355,8 +355,8 @@ def font_path(source)
# <img src="/images/mouse.png" onmouseover="this.src='/images/mouse_over.png'" onmouseout="this.src='/images/mouse.png'" alt="Mouse" />
# image_tag("mouse.png", :mouseover => image_path("mouse_over.png")) # =>
# <img src="/images/mouse.png" onmouseover="this.src='/images/mouse_over.png'" onmouseout="this.src='/images/mouse.png'" alt="Mouse" />
def image_tag(source, options = {})
options.symbolize_keys!
def image_tag(source, options={})
options = options.dup.symbolize_keys!
src = options[:src] = path_to_image(source)
......@@ -416,22 +416,12 @@ def image_alt(src)
# 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 @@ def video_tag(*sources)
# 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 @@ def audio_tag(*sources)
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
......@@ -445,6 +445,12 @@ def test_image_tag
ImageLinkToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) }
end
def test_image_tag_does_not_modify_options
options = {:size => '16x10'}
image_tag('icon', options)
assert_equal({:size => '16x10'}, options)
end
def test_favicon_link_tag
FaviconLinkToTag.each { |method, tag| assert_dom_equal(tag, eval(method)) }
end
......@@ -488,6 +494,14 @@ def test_audio_tag
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")
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册