Permalink
Browse files

Add font_path helper method

  • Loading branch information...
1 parent eafdf6c commit 0d7d3a6e77c7f2f34236459bd1170951ded91bd5 @spastorino spastorino committed Jan 3, 2012
View
@@ -1,5 +1,7 @@
## Rails 3.2.0 (unreleased) ##
+* Add font_path helper method *Santiago Pastorino*
+
* Depends on rack ~> 1.4.0 *Santiago Pastorino*
* Add :gzip option to `caches_page`. The default option can be configured globally using `page_cache_compression` *Andrey Sitnik*
@@ -306,6 +306,20 @@ def audio_path(source)
end
alias_method :path_to_audio, :audio_path # aliased to avoid conflicts with an audio_path named route
+ # Computes the path to a font asset in the public fonts directory.
+ # Full paths from the document root will be passed through.
+ #
+ # ==== Examples
+ # font_path("font") # => /fonts/font
+ # font_path("font.ttf") # => /fonts/font.ttf
+ # font_path("dir/font.ttf") # => /fonts/dir/font.ttf
+ # font_path("/dir/font.ttf") # => /dir/font.ttf
+ # font_path("http://www.example.com/dir/font.ttf") # => http://www.example.com/dir/font.ttf
+ def font_path(source)
+ asset_paths.compute_public_path(source, 'fonts')
+ end
+ alias_method :path_to_font, :font_path # aliased to avoid conflicts with an font_path named route
+
# Returns an html image tag for the +source+. The +source+ can be a full
# path or a file that exists in your public images directory.
#
@@ -63,6 +63,11 @@ def image_path(source)
end
alias_method :path_to_image, :image_path # aliased to avoid conflicts with an image_path named route
+ def font_path(source)
+ path_to_asset(source)
+ end
+ alias_method :path_to_font, :font_path # aliased to avoid conflicts with an font_path named route
+
def javascript_path(source)
path_to_asset(source)
end
@@ -24,6 +24,7 @@ def setup
@assets.append_path(FIXTURES.join("sprockets/app/javascripts"))
@assets.append_path(FIXTURES.join("sprockets/app/stylesheets"))
@assets.append_path(FIXTURES.join("sprockets/app/images"))
+ @assets.append_path(FIXTURES.join("sprockets/app/fonts"))
application = Struct.new(:config, :assets).new(config, @assets)
Rails.stubs(:application).returns(application)
@@ -147,6 +148,14 @@ def compute_host(source, request, options = {})
path_to_image("logo.png")
end
+ test "font_path" do
+ assert_match %r{/assets/font-[0-9a-f]+.ttf},
+ font_path("font.ttf")
+
+ assert_match %r{/assets/font-[0-9a-f]+.ttf},
+ path_to_font("font.ttf")
+ end
+
test "javascript_path" do
assert_match %r{/assets/application-[0-9a-f]+.js},
javascript_path("application.js")
@@ -186,6 +195,17 @@ def compute_host(source, request, options = {})
asset_path("/images/logo.gif")
end
+ test "font path through asset_path" do
+ assert_match %r{/assets/font-[0-9a-f]+.ttf},
+ asset_path('font.ttf')
+
+ assert_match %r{/assets/dir/font-[0-9a-f]+.ttf},
+ asset_path("dir/font.ttf")
+
+ assert_equal "http://www.example.com/fonts/font.ttf",
+ asset_path("http://www.example.com/fonts/font.ttf")
+ end
+
test "javascript path through asset_path" do
assert_match %r{/assets/application-[0-9a-f]+.js},
asset_path(:application, :ext => "js")

0 comments on commit 0d7d3a6

Please sign in to comment.