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