module Archetype::SassExtensions::Util::Images # # helper to determine if a sprite is already set or sprites are disabled # # *Parameters*: # - $sprite {SpriteMap} the sprite map to check against # *Returns*: # - {Boolean} should the sprite be set # def _shouldSetSprite(sprite) is_sprite = sprite.is_a?(Compass::SassExtensions::Sprites::SpriteMap) should_set_sprite = !global_sprites_disabled? && !is_sprite return bool(should_set_sprite) end Sass::Script::Functions.declare :get_collection, [:components, :min] # # check that a sprite isn't null or false # # *Parameters*: # - $map {SpriteMap} the sprite map to check against # *Returns*: # - {Boolean} is the sprite set # def _archetype_check_sprite(map) return bool(_is_sprite_valid(map)) end Sass::Script::Functions.declare :_archetype_check_sprite, [:map] # # wrapper for `sprite` # # *Parameters*: # - $map {SpriteMap} the sprite map # - $sprite {Sprite} the sprite name # - $offset-x {Number} the horizontal offset of the sprite position # - $offset-y {Number} the vertical offset of the sprite position # *Returns*: # - {Sprite} the sprite object or `null` # def _archetype_sprite(map, sprite, offset_x = number(0), offset_y = number(0)) return null unless _is_sprite_valid(map) return sprite(map, sprite, offset_x, offset_y) end Sass::Script::Functions.declare :_archetype_sprite, [:map, :sprite, :offset_x, :offset_y] # # wrapper for `sprite-position` # # *Parameters*: # - $map {SpriteMap} the sprite map # - $sprite {Sprite} the sprite name # - $offset-x {Number} the horizontal offset of the sprite position # - $offset-y {Number} the vertical offset of the sprite position # *Returns*: # - {List} the sprite position or `null` # def _archetype_sprite_position(map, sprite, offset_x = number(0), offset_y = number(0)) return null unless _is_sprite_valid(map) return sprite_position(map, sprite, offset_x, offset_y) end Sass::Script::Functions.declare :_archetype_sprite_position, [:map, :sprite, :offset_x, :offset_y] # # wrapper for `sprite-url` # # *Parameters*: # - $map {SpriteMap} the sprite map # *Returns*: # - {String} the sprite URL or `null` # def _archetype_sprite_url(map) return null unless _is_sprite_valid(map) return sprite_url(map) end Sass::Script::Functions.declare :_archetype_sprite_url, [:map] # # wrapper for `sprite-file` # # *Parameters*: # - $map {SpriteMap} the sprite map # - $sprite {Sprite} the sprite name # *Returns*: # - {ImageFile} the image or `null` # def _archetype_sprite_file(map, sprite) return null unless _is_sprite_valid(map) return sprite_file(map, sprite) end Sass::Script::Functions.declare :_archetype_sprite_file, [:map, :sprite] # # wrapper for `image-width` # # *Parameters*: # - $image {ImageFile} the image # - $sprite {Sprite} the sprite name # *Returns*: # - {Number} the width of the image or `null` # def _archetype_image_width(image) return null if helpers.is_null(image) return image_width(image) end Sass::Script::Functions.declare :_archetype_image_width, [:image] # # wrapper for `image-height` # # *Parameters*: # - $image {ImageFile} the image # - $sprite {Sprite} the sprite name # *Returns*: # - {Number} the height of the image or `null` # def _archetype_image_height(image) return null if helpers.is_null(image) return image_height(image) end Sass::Script::Functions.declare :_archetype_image_height, [:image] private def _is_sprite_valid(map) return !global_sprites_disabled? && !(helpers.is_null(map) || !map.to_bool) end def global_sprites_disabled? sprites_disabled = environment.var('CONFIG_DISABLE_STYLEGUIDE_SPRITES') return sprites_disabled.respond_to?(:to_bool) ? sprites_disabled.to_bool : false end end