lib/sprockets/sass/functions.rb in sprockets-sass-0.8.0 vs lib/sprockets/sass/functions.rb in sprockets-sass-0.9.0

- old
+ new

@@ -1,10 +1,21 @@ require 'sass' module Sprockets module Sass module Functions + # Using Sprockets::Context#asset_data_uri return a Base64-encoded `data:` + # URI with the contents of the asset at the specified path. + # + # === Examples + # + # background: asset-data-uri("image.jpg"); // background: url(data:image/jpeg;base64,...); + # + def asset_data_uri(source) + ::Sass::Script::String.new "url(#{sprockets_context.asset_data_uri(source.value)})" + end + # Using Sprockets::Helpers#asset_path, return the full path # for the given +source+ as a Sass String. This supports keyword # arguments that mirror the +options+. # # === Examples @@ -71,20 +82,44 @@ options = {} end end ::Sass::Script::String.new "url(#{image_path(source, options)})" end + + # Using Sprockets::Helpers#font_path, return the full path + # for the given +source+ as a Sass String. This supports keyword + # arguments that mirror the +options+. + # + # === Examples + # + # src: url(font-path("font.ttf")); // src: url("/assets/font.ttf"); + # src: url(font-path("font.ttf", $digest: true)); // src: url("/assets/font-27a8f1f96afd8d4c67a59eb9447f45bd.ttf"); + # + def font_path(source, options = {}) + ::Sass::Script::String.new sprockets_context.font_path(source.value, map_options(options)).to_s, :string + end - # Using Sprockets::Context#asset_data_uri return a Base64-encoded `data:` - # URI with the contents of the asset at the specified path. + # Using Sprockets::Helpers#font_path, return the url CSS + # for the given +source+ as a Sass String. This supports keyword + # arguments that mirror the +options+. # # === Examples - # - # background: asset-data-uri("image.jpg"); // background: url(data:image/jpeg;base64,...); # - def asset_data_uri(source) - ::Sass::Script::String.new "url(#{sprockets_context.asset_data_uri(source.value)})" + # src: font-url("font.ttf"); // src: url("/assets/font.ttf"); + # src: font-url("image.jpg", $digest: true); // src: url("/assets/font-27a8f1f96afd8d4c67a59eb9447f45bd.ttf"); + # + def font_url(source, options = {}) + # Work with the Compass #font_url API + if options.respond_to? :value + case options.value + when true + return font_path source + else + options = {} + end + end + ::Sass::Script::String.new "url(#{font_path(source, options)})" end protected # Returns a reference to the Sprocket's context through @@ -107,11 +142,11 @@ module Sass::Script::Functions include Sprockets::Sass::Functions # Hack to ensure previous API declarations (by Compass or whatever) # don't take precedence. - [:asset_path, :asset_url, :image_path, :image_url, :asset_data_uri].each do |method| + [:asset_path, :asset_url, :image_path, :image_url, :font_path, :font_url, :asset_data_uri].each do |method| defined?(@signatures) && @signatures.delete(method) end declare :asset_path, [:source], :var_kwargs => true declare :asset_path, [:source, :kind] @@ -119,7 +154,10 @@ declare :asset_url, [:source, :kind] declare :image_path, [:source], :var_kwargs => true declare :image_url, [:source], :var_kwargs => true declare :image_url, [:source, :only_path] declare :image_url, [:source, :only_path, :cache_buster] + declare :font_path, [:source], :var_kwargs => true + declare :font_url, [:source], :var_kwargs => true + declare :font_url, [:source, :only_path] declare :asset_data_uri, [:source] end