1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Moved image_tag to AssetTagHelper

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@899 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
David Heinemeier Hansson 2005-03-14 00:18:12 +00:00
parent 7edb10fe68
commit 9790233dfd
5 changed files with 31 additions and 30 deletions

View file

@ -54,6 +54,31 @@ module ActionView
tag("link", "rel" => "Stylesheet", "type" => "text/css", "media" => "screen", "href" => source)
}.join("\n")
end
# Returns an image tag converting the +options+ instead html options on the tag, but with these special cases:
#
# * <tt>:alt</tt> - If no alt text is given, the file name part of the +src+ is used (capitalized and without the extension)
# * <tt>:size</tt> - Supplied as "XxY", so "30x45" becomes width="30" and height="45"
#
# The +src+ can be supplied as a...
# * full path, like "/my_images/image.gif"
# * file name, like "rss.gif", that gets expanded to "/images/rss.gif"
# * file name without extension, like "logo", that gets expanded to "/images/logo.png"
def image_tag(src, options = {})
options.symbolize_keys
options.update({ :src => src.include?("/") ? src : "/images/#{src}" })
options[:src] += ".png" unless options[:src].include?(".")
options[:alt] ||= src.split("/").last.split(".").first.capitalize
if options[:size]
options[:width], options[:height] = options[:size].split("x")
options.delete :size
end
tag("img", options)
end
end
end
end

View file

@ -22,32 +22,6 @@ module ActionView
"<#{name}#{tag_options(options)}>#{content}</#{name}>"
end
# Returns an image tag converting the +options+ instead html options on the tag, but with these special cases:
#
# * <tt>:alt</tt> - If no alt text is given, the file name part of the +src+ is used (capitalized and without the extension)
# * <tt>:size</tt> - Supplied as "XxY", so "30x45" becomes width="30" and height="45"
#
# The +src+ can be supplied as a...
# * full path, like "/my_images/image.gif"
# * file name, like "rss.gif", that gets expanded to "/images/rss.gif"
# * file name without extension, like "logo", that gets expanded to "/images/logo.png"
def image_tag(src, options = {})
options.symbolize_keys
options.update({ :src => src.include?("/") ? src : "/images/#{src}" })
options[:src] += ".png" unless options[:src].include?(".")
options[:alt] ||= src.split("/").last.split(".").first.capitalize
if options[:size]
options[:width], options[:height] = options[:size].split("x")
options.delete :size
end
tag("img", options)
end
private
def tag_options(options)
unless options.empty?

View file

@ -42,4 +42,8 @@ class AssetTagHelperTest < Test::Unit::TestCase
def test_style_link
StyleLinkToTag.each { |method, tag| assert_equal(tag, eval(method)) }
end
def test_image_tag
assert_equal %(<img alt="Gold" height="70" src="/images/gold.png" width="45" />), image_tag("gold", :size => "45x70")
end
end

View file

@ -17,8 +17,4 @@ class TagHelperTest < Test::Unit::TestCase
assert_equal content_tag("a", "Create", "href" => "create"),
content_tag("a", "Create", :href => "create")
end
def test_image_tag
assert_equal %(<img alt="Gold" height="70" src="/images/gold.png" width="45" />), image_tag("gold", :size => "45x70")
end
end

View file

@ -1,11 +1,13 @@
require File.dirname(__FILE__) + '/../abstract_unit'
require File.dirname(__FILE__) + '/../../lib/action_view/helpers/url_helper'
require File.dirname(__FILE__) + '/../../lib/action_view/helpers/asset_tag_helper'
require File.dirname(__FILE__) + '/../../lib/action_view/helpers/tag_helper'
RequestMock = Struct.new("Request", :request_uri)
class UrlHelperTest < Test::Unit::TestCase
include ActionView::Helpers::AssetTagHelper
include ActionView::Helpers::UrlHelper
include ActionView::Helpers::TagHelper