module Spritely::SassFunctions
Public Instance Methods
spritely_background(sprite_name, image_name)
click to toggle source
# File lib/spritely/sass_functions.rb, line 24 def spritely_background(sprite_name, image_name) sass_space_separated_list([spritely_url(sprite_name), spritely_position(sprite_name, image_name)]) end
spritely_height(sprite_name, image_name = nil)
click to toggle source
# File lib/spritely/sass_functions.rb, line 42 def spritely_height(sprite_name, image_name = nil) image = if image_name find_image(sprite_name, image_name) else find_sprite_map(sprite_name) end Sass::Script::Value::Number.new(image.height, ['px']) end
spritely_position(sprite_name, image_name)
click to toggle source
# File lib/spritely/sass_functions.rb, line 13 def spritely_position(sprite_name, image_name) image = find_image(sprite_name, image_name) x = Sass::Script::Value::Number.new(-image.left, image.left == 0 ? [] : ['px']) y = Sass::Script::Value::Number.new(-image.top, image.top == 0 ? [] : ['px']) sass_space_separated_list([x, y]) end
spritely_url(sprite_name)
click to toggle source
# File lib/spritely/sass_functions.rb, line 5 def spritely_url(sprite_name) sprockets_context.link_asset("sprites/#{sprite_name.value}.png") asset_url(Sass::Script::Value::String.new("sprites/#{sprite_name.value}.png")) end
spritely_width(sprite_name, image_name = nil)
click to toggle source
# File lib/spritely/sass_functions.rb, line 30 def spritely_width(sprite_name, image_name = nil) image = if image_name find_image(sprite_name, image_name) else find_sprite_map(sprite_name) end Sass::Script::Value::Number.new(image.width, ['px']) end
Private Instance Methods
find_image(sprite_name, image_name)
click to toggle source
# File lib/spritely/sass_functions.rb, line 56 def find_image(sprite_name, image_name) sprite_map = find_sprite_map(sprite_name) sprite_map.find(image_name.value) || raise(Sass::SyntaxError, "No image '#{image_name.value}' found in sprite map '#{sprite_map.name}'.") end
find_sprite_map(sprite_name)
click to toggle source
# File lib/spritely/sass_functions.rb, line 62 def find_sprite_map(sprite_name) sprockets_context.link_asset("sprites/#{sprite_name.value}.png") sprite_maps.fetch(sprite_name.value) do |name| asset = sprockets_environment.find_asset("sprites/#{name}.png.sprite") || raise(Sass::SyntaxError, "No sprite map '#{name}' found.") sprite_maps[name] = SpriteMap.new(name, sprockets_environment, asset.metadata[:sprite_directives]) end end
sass_space_separated_list(value)
click to toggle source
# File lib/spritely/sass_functions.rb, line 76 def sass_space_separated_list(value) # Sass 3.5 introduced support for bracketed lists (sass/sass@be02da0), which changed the # method signature of `Sass::Script::Value::List#initialize` to accept the `separator` as a # keyword argument rather than as the second positional argument. if Gem::Version.new(Sass.version[:number]) < Gem::Version.new("3.5") Sass::Script::Value::List.new(value, :space) else Sass::Script::Value::List.new(value, separator: :space) end end
sprite_maps()
click to toggle source
# File lib/spritely/sass_functions.rb, line 72 def sprite_maps @sprite_maps ||= {} end